Para muchos usuarios de sistemas tipo UNIX, el _shell_ es una excelente interfaz de comunicación entre ellos y el sistema operativo. Es una interfaz de texto que en ocasiones, si le sabemos preguntar, lo puede decir todo. También puede verse como la lengua más hablada por los sysadmins UNIX, una con docenas de dialectos como bash, ash, csh, ksh, zsh.
El shell bash domina entre todos ellos, sobre todo en Linux. Pero esto no significa que no halla nuevos intentos para mejorar la comunicación, la simbiosis, hombre-shell. Y este es el caso de fish, un amistoso e interactivo intérprete de comandos.
¿Quieres conocer fish? A continuación te presento una guía interactiva mínima para darte a conocer este curioso software para comandar Linux y los entes que allí viven.
Instalación
En la familia Debian:
$ sudo apt-get install fish
Para otras distros, consulta con tu gestor de paquetes.
Uso
Lo primero que notarás en fish son los colores. Cada comando es coloreado por defecto con el color verde. Algo así sucede con los directorios, ligas, y demás tipos de archivo. Los directorios y comandos aparecen subrayados cada vez se utilizan en el shell. En el siguiente ejemplo ejecuto el comando ls sobre el directorio /var/run.
¿Ya notaste que hay un coloreado distinto comparado con el de bash? Hay más aún. Mira la cantidad de información que nos entrega la tecla TAB presionada en seguida de la letra "n" en /var/run: fish identifica a cada elemento en el directorio.
En este ejemplo pruebo tecleando ls --h[TAB], es decir, le pido a fish que me diga qué otras opciones acompañan a --h.
Ahora utilizo TAB para conocer información sobre manuales cuyo nombre inicie con ls.
Programación
Quizá te agrade saber que fish es también un lenguaje de programación. Creo que aún no tiene el poder de bash, pero sí es suficiente para tareas sencillas. A continuación te ofrezco algunos ejemplos.
Aquí declaro una función llamada ll con la intención de que sea un alias del comando ls -l. Te sorprenderá ver que fish indenta automáticamente el código. Desde ya puedes ver que la sintaxis es sencilla, también en comparación con bash.
La declaración de variables es más intuitiva también:
$ set x y
$ echo $x
y
Aquí declaro un arreglo compuesto por una secuencia de 7 enteros usando el comando seq. Nota que la manera de obtener los valores devueltos por un comando es encerrándolo entre paréntesis.
$ set A (seq 7)
$ echo $A
1 2 3 4 5 6 7
Si quieres ayuda con esas y otras funciones, ejecuta
$ help [opcionalmente, algún comando]
desde fish y éste abrirá una ventana de tu navegador con la documentación oficial.
Conclusiones
Si fish te convenció de dejar bash o algún otro shell, házlo para siempre ejecutando este comando:
$ chsh -s /usr/bin/fish
Con esto fish será tu shell por defecto a partir de tu siguiente inicio de sesión.
Estoy convencido de que fish es una excelente opción para aquellos que se inician en la línea de comandos y/o quieren opciones que les permitan aprender más rápido y en un futuro dar el salto a bash u otro shell, sobre todo si su intención es convertirse en todo un sysadmin, amo y señor de UNIX...