¿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. Uso de Fish

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 comiencen a introducir comandos, Fish nos sugerirá
nombres y comandos al vuelo. Para terminar de escribirlos puedes
presionar flecha izquierda de cursor.

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

También puedes utilizar la tecla Tab para completar un comando
semiescrito.


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 cuenta con este completado de comandos con
explicaciones. Por ejemplo, si estamos utilizando la orden apt get
install y presionamos Tab, nos presentará la lista de paquetes con un
resúmen 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. Temas con Oh My Fish!

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

Instalación

Podrásninstalar Oh My Fish! (y su tema “Default” ¡con “pescaditos” en el
prompt!) en texto-plano. Utiliza:

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

El instalador abandonará la sesión, tras lo cual podrás volver a ingresar.

Luego habrán de listar todos los paquetes de plugins y temas
individuales del proyecto Oh My Fish! con

omf list

Podrán listar únicamente los temas con

omf theme

Podrán consultar todos los temas posibles aquí. Unas lindas que puedes probar sin conflicto son:

default   boxfish   bira    coffeeandcode
gentoo    godfather harleen mokou
neolambda scorphish

Instala un tema (por ejemplo gentoo) con

omf install bira


Algunos temas requieren ciertos cambios al prompt. Estos requerirían
utilizar la orden omf doctor, y luego ingresar el comando rm
~/.config/fish/functions/fish_prompt.fish.

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

Si han descubierto que Fish es de su agrado y desean 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