martes, 5 de julio de 2022

¿Cómo instalo y uso el intérprete de comandos Fish en Ubuntu?

En su discurso con motivo de la Fiesta del Pejerrey de 1947, Juan Perón retorna a Junín y expone sobre las bondades del fish, el intérprete de comandos avanzado de Ubuntu.

¡Trabajadores!

Desde los tiempos inmemoriales sabe el Hombre que obtendrá, con el sudor de su frente, los frutos que Dios le ha regalado en la naturaleza. Pero son pocos los que pueden multiplicar tal fruto como hizo Cristo con los peces. Esto motiva que, para que un trabajo sea verdadero, debe multiplicarse el esfuerzo en pescar.

Yo no enseño a pescar, eso lo hacen ustedes. (aplausos). Lo que yo doy son peces. ¡Y qué gordos que han picado!

La organización del trabajo es lo que nos ha dado lo que tenemos, y nos lo dará siempre que lo sepamos defender. Los derechos adquiridos que ha otorgado el Justicialismo emanan de una acción de Justicia que es comprendida por todos: la Justicia Social.

Pues bien señores, sabemos que en los sistemas GNU con Linux la dirección parte del hacker, que obrará indefectiblemente por iniciativa de Justicia Social. Quien en su nombre sirve a una empresa, lo es solo de nombre. Por ello, para que el trabajo se realice, hemos de ingresar órdenes en un intérprete de comandos, que recibe el nombre de shell.

En los Unix de los tiempos de Matusalén, el intérprete de base era el Sh, capaz de operar ya de forma interactiva, pero también como englobador de comandos en ficheros, a los que podemos llamar guiones. De este - diremos - trilobite, surgieron otros más interesantes y poderosos, como el C Shell, o la shell de Bourne. Cada uno de estos pescados presentaba más aletas, y otras características para nadar. En el mar, el pez grande se morfa al chico, y por ello fue que surgió uno que por entonces se estableció como el más pesado e inteligente, el Korn Shell, que hasta tentáculos tiene. Miren si habrá sido de ballena, que de él se inspiraron - en la época del GNU - para combinar un nuevo Bourne nacido de nuevo ("Bash"). Sería este el intérprete de comandos que viene por defecto en la mayoría de las distribuciones modernas de Linux.

El el que más me gusta porque va bien en su salsa, se lo empaniza, se lo sirve en cazuelitas: es compatible con todo lo que se ha hecho, pues está concienzudamente armado para retrocompatibilidad con programas antiguos y terminales teletipo.

Pero a veces conviene pescarse algo nuevo. Tanta arqueología es útil y tiene su lugar,  pero no siempre implica lo mejor en agilidad en el mar. Mas de uno habrá percibido que el día de hoy las terminales cuentan ya con muchos colores, y no solamente caracteres de tipo ASCII, sino también hasta emojis, como los que uso para hacer la ✌️. De esta evolución, nació el intérprete Fish Shell.

Se trata de un intérprete de comandos orientado a maximizar la amigabilidad interactiva con el usuario, y no tanto en mantener compatibilidad con otros intérpretes más corrientes tales como el Bash que viene por defecto en Ubuntu. De esta manera Incluye muchas funcionalidades que se no encuentran en otros intérpretes modernos, incluyendo el uso avanzado de caracteres UFT-8 y emojis, que simplifican la experiencia de uso en gran medida. 

Por otra parte, su sintaxis difiere un poco de la que utilizan otros intérpretes, lo que hay que tener en cuenta. Asimismo, fish abandona la compatibilidad con antiguas terminales teletipo.

Para instarlo abrimos una terminal con Ctrl+Alt+t e ingresamos el siguiente comando de organización:

sudo apt update
sudo apt install fish xsel git

Podremos ejecutarlo "a mano" para probarlo, para ello lo llamamos con:

fish


Ante un mensaje de bienvenida en el idioma de Braden, nos encontraremos un prompt básico de Fish, que guardará este estilo:

usuario@maquina ~>

Para salir del intérprete podremos ingresar exit, y volveremos al Bash o cualquier intérprete de comandos que estuviésemos utilizando por defecto.

Vean señores, el uso básico de fish es - por generalidad - similar a Bash u otros de su especie. Para su configuración básica, Fish utiliza el fichero ~/.config/fish/config.fish. (Introduciendo dicho código contaremos con un mensaje de bienvenida en castellano.

Autocompletado

En la medida que comencemos a introducir comandos de operación, Fish nos sugerirá nombres y autocompletará los comandos al vuelo. Para terminar de escribirlos se presiona flecha izquierda de cursor (también se puede utilizar la tecla Tab para completar un comando semiescrito, como en Bash). Y  naturalmente le damos entrada con Enter.

Por defecto Fish utilizará colores que incluso te indicarán la validez de la entrada sugerida (marcando en rojo si es inválido.


Al presionar la tecla Tab dos veces, nos deplegará una lista coloreada con opciones, la cual podrás elegir utilizando las flechas del cursor. Con esto podremos nadar en los directorios como pez en el agua.

La más de las veces, Fish contará con este completado de comandos con explicaciones. Por ejemplo, si estamos utilizando la orden apt get install y presionamos Tab, Fish nos presentará la lista de paquetes con un resumen del mismo (situación que se replica con la mayoría de los comandos Unix estándar, espejador de código fuente git, y servidores Web). Trabajar así es un placer que no es esfuerzo...

Programación con Fish

Al igual que Bash y Korn Shell, Fish cuenta también con un lenguaje de guionado que guarda grandes similitudes, pero no es 100% similar a estos dos. Afortunadamente es posible aprender más sobre las diferencias del mismo en este Tutorial de Fish.

Con este podremos dar rienda suelta a la Comunidad Organizada.

Indudablemente la shell Fish no es demasiado compatible con otros intérpretes desde el punto de la programación estricta, mas es altamente configurable, por lo que podrán instalar temas y plugins paquetizados con el proyecto Oh My Fish!.

Instalación

Es posible instalar Oh My Fish! (y su tema “Default” ¡con "pescados" en el prompt!) ingresando el la terminal el siguiente comando:

curl -L https://get.oh-my.fish | fish

El instalador abandonará la sesión de intérprete, tras lo cual será necesario volver a ingresar. Conforme lo hayamos hecho, podremos listar todos los paquetes de plugins y temas disponibles del proyecto Oh My Fish!. Esto se efectúa con:

omf list

Asimismo podremos listar únicamente los temas mediante la orden:

omf theme

Podrán consultar todos los temas posibles aquí. No todas los themes están libres de errores, pero es posible probar unas lindas que no presentan conflicto alguno:

default   boxfish     bira      coffeeandcode
gentoo    godfather   harleen   mokou
neolambda nelsonjchen scorphish edan
fisk      zish

Por ejemplo, para instala un tema (por ejemplo bira), hemos de recurrir a:

omf install bira


Ciertos temas requieren algunas modificaciones al fichero que configura el prompt del intérprete, que es ~/.config/fish/functions/fish_prompt.fish. En caso de presentarse conflictos, omf nos lo informará, y podremos tilizar la orden omf doctor para superarlos (usualmente nos solicita ingresar el comando rm ~/.config/fish/functions/fish_prompt.fish para corregir las variantes existentes entre tema y tema).
 
Pues bien, si deseamos desinstalar un componente (como un tema instalado) habremos de utilizar:

omf remove bira

Para recibir ayuda del Oh My Fish! utilizaremos:

omf --help

Si deseamos desinstalar Oh My Fish! debemos emplear:

omf destroy

…con lo cual Fish retornará a su configuración por defecto, o bien podrán eliminar a mano su carpeta de configuración mediante:

rm ~/.config/fish/functions/fish_prompt.fish ;
rm -r ~/.local/share/omf

Convertir a Fish en la shell por defecto

Es posible asignar manualmente la Fish Shell a un perfil de terminal. En el caso del emulador de Terminal de Mate, es posible crear un perfil y en la solapa Título y Orden tildar la opción Ejecutar una orden personalizada en vez de mi intérprete. De esta manera, en el campo Orden personalizada podremos y asignarle una tal como

env TERM=xterm-256color /usr/bin/fish

...lo que asignará un terminal tipo xterm con 256 colores que inicie el intérprete Fish.

No bien hemos descubierto que Fish resulta del agrado de las masas, será posible utilizarlo siempre en Ubuntu (o sea, convertirlo en la shell por defecto en lugar de Bash) podremos cambiarlo haciendo uso del comando chsh, de la siguiente manera:

chsh -s /usr/bin/fish

Para que surta efecto, habremos de reinciar la sesión en Ubuntu.

Naturalmente, podremos volver nuevamente al intérprete por defecto de Ubuntu: Bash. Para ello debemos utilizar una ruta distinta, en este caso:

chsh -s /bin/bash

No hay comentarios:

Publicar un comentario