Fish Shell.

Cómo instalar Fish, un intérprete ‘inteligente’ de comandos para Gnu/Linux/Hurd y *BSD

Fish es un intérprete de línea de comandos (como bash y zsh), inteligente (en el sentido de que se retroalimenta del entorno y de los hábitos del usuario) e intuitivo. fish cuenta con potentes características como el resaltado de sintaxis, sugerencias automáticas, completado por tabulación más eficaz y sin tener nada que aprender ni nada que configurar.

Si quieres hacer que tu línea de comandos sea más productiva, más útil y más divertida sin tener que aprender un montón de sintaxis arcana u opciones de configuración, ¡puede que fish sea justo lo que estás buscando!

¿Por qué hay quien usa fish en lugar de otros intérpretes de comandos?

  • Sugerencias automáticas. fish sugiere comandos según vas escribiéndolos basándose en el historial de comandos usados anteriormente, igual que un navegador web.
  • Guiones coherentes. fish es totalmente guionizable, y su sintaxis es sencilla, clara y consistente. Nunca volverás a escribir esac.
  • Completado desde las páginas de man. Otros intérpretes permiten la programación de completado automático, pero sólo fish genera ese completado basándose en el contenido de las páginas de man instaladas en el sistema.
  • Colores VGA. fish soporta de forma nativa term256, ¡tendrás disponibles 256 asombrosos colores para usarlos!
  • Configuración basada en la web. Puedes configurar los colores y ver las funciones, las variables y todo el historial de uso a través de tu navegador web.
  • Instalar y listo. Podrás disfrutar de todas las funcionalidades de fish como el completado por tabulación, las sugerencias basadas en el historial y en las instrucciones contenidas en las páginas de man, sin aprender nada nuevo ni nada que configurar.

Siguiendo las siguientes instrucciones podrás instalar fish en

Éstas también contemplan una configuración básica y cómo volver al intérprete de comandos bash (temporalmente o permanentemente).

Instalando fish en Debian y otras distribuciones ‘.deb’

Para Ubuntu y distribuciones derivadas, hay un repositorio PPA (Ver más adelante).

Añade el repositorio y descarga e instala el certificado de seguridad a apt:

$ su -
# echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/2/Debian_8.0/ /' >> /etc/apt/sources.list.d/fish.list
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Debian_8.0/Release.key
# apt-key add - < Release.key
# echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/2/Debian_7.0/ /' >> /etc/apt/sources.list.d/fish.list
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Debian_7.0/Release.key
# apt-key add - < Release.key
# echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/2/Debian_6.0/ /' >> /etc/apt/sources.list.d/fish.list
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Debian_6.0/Release.key
# apt-key add - < Release.key

Actualiza el sistema:

# apt-get update
# apt-get upgrade

Instala fish:

# apt-get install fish
# exit

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quieres convertir a fish en el intérprete de comandos por defecto de otro/a usuario/a:

$ su -c 'chsh -s /usr/bin/fish nombre-de-usuario'

Instalando fish en Ubuntu y distribuciones derivadas

Añade el repositorio PPT a apt:

$ sudo apt-add-repository ppa:fish-shell/release-2

Actualiza el sistema:

$ sudo apt-get update
$ sudo apt-get upgrade

Instala fish:

$ sudo apt-get install fish

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quieres convertir a fish el intérprete de comandos de otro/a usuario/a:

$ sudo chsh -s /usr/bin/fish nombre-de-usuario

Instalando fish en Fedora

Añade el repositorio a yum:

$ su -
# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Fedora_23/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Fedora_22/shells:fish:release:2.repo
# wget wget http://download.opensuse.org/repositories/shells:fish:release:2/Fedora_21/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Fedora_20/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Fedora_19/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/Fedora_18/shells:fish:release:2.repo

Actualiza el sistema:

# yum repolist
# yum update

Instala fish:

# yum install fish
# exit

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quieres convertir a fish en el intérprete de comandos por defecto de otro/a usuario/a:

$ su -c 'chsh -s /usr/bin/fish nombre-de-usuario'
Si $ su - no funciona, prueba con $ sudo -i. Si $ su -c 'comando' no funciona, prueba con $ sudo comando.

Instalando fish en CentOS

Añade el repositorio a yum:

$ sudo -i
# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/shells:fish:release:2/CentOS_7/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/CentOS_6/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/CentOS_5/shells:fish:release:2.repo

Actualiza el sistema:

# yum repolist
# yum update

Instala fish:

# yum install fish
# exit

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quiere convertir a fish intérprete de comandos por defecto de otro/a usuario/a:

$ sudo chsh -s /usr/bin/fish nombre-de-usuario
Si $ sudo -i no funciona, prueba con $ su -. Si $ sudo comando no funciona, prueba con $ su -c 'comando'.

Instalando fish en RedHat

Añande el repositorio yum:

$ sudo -i
# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/shells:fish:release:2/RHEL_7/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/RedHat_RHEL-6/shells:fish:release:2.repo
# wget http://download.opensuse.org/repositories/shells:fish:release:2/RedHat_RHEL-5/shells:fish:release:2.repo

Actualiza el sistema:

# yum repolist
# yum update

Instala fish:

# yum install fish
# exit

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quiere convertir a fish en el intérprete de comandos por defecto de otro/a usuario/a:

$ sudo chsh -s /usr/bin/fish nombre-de-usuario
Si $ sudo -i no funciona, prueba con $ su -. Si $ sudo comando no funciona, prueba con $ su -c 'comando'.

Instalando fish en openSUSE

Instálalo usando One Click Install:

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quieres convertir a fish en el intérprete de comandos por defecto de otro/a usuario/a:

$ sudo chsh -s /usr/bin/fish nombre-de-usuario
Si $ sudo -i no funciona, prueba con $ su -. Si $ sudo comando no funciona, prueba con $ su -c 'comando'.

Instalando fish en Arch, Manjaro y otras distribuciones ‘AUR’

Actualiza el sistema:

$ su -
# pacman -Syu

Instala fish:

# pacman -S fish
# exit

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quieres convertir a fish en el intérprete de comandos por defecto de otro/a usuario/a:

$ su -c 'chsh -s /usr/bin/fish nombre-de-usuario'
Si $ su - no funciona, prueba con $ sudo -i. Si $ su -c 'comando' no funcion, prueba con $ sudo comando.

Instalando fish en Gentoo

Actualiza el sistema:

$ su -
# emerge --sync
# emerge --update @world

Instala fish:

# emerge app-shells/fish
# exit

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quieres convertir a fish en el intérprete de comandos por defecto de otro/a usuario/a:

$ su -c 'chsh -s /usr/bin/fish nombre-de-usuario'
Si $ su - no funciona, prueba con $ sudo -i. Si $ su -c 'comando' no funciona, prueba con $ sudo comando.

Instalando fish en FreeBSD

Actualiza el sistema:

$ su -
# freebsd-update fetch
# freebsd-update install

Instala fish:

# pkg install shells/fish
# exit

Haz de fish tu intérprete de comandos por defecto:

$ chsh -s /usr/bin/fish

Si quieres convertir a fish en el intérprete de comandos por defecto de otro/a usuario/a:

$ su -c 'chsh -s /usr/bin/fish nombre-de-usuario'

Configuración básica (Opcional)

El intérprete de comandos fish estará ahora instalado y será totalmente funcional, pero unos pequeños retoques en la configuración mejorán nuestra productividad.

Crea el directorio de configuración de fish (puede que ya haya sido creado tras la instalación):

$ mkdir -p ~/.config/fish

Crea el archivo de configuración:

$ nano ~/.config/fish/config.fish

Añade la siguiente línea para añadir a /usr/local/bin a la variable de entorno PATH:

if status --is-login
  set PATH $PATH /usr/bin /usr/sbin /usr/local/bin /bin /sbin
end

Abre un nuevo terminal, que debería iniciarse con fish como intérprete de línea de comandos por primera vez:

Un nuevo terminal con fish como intérprete de comandos.
Un nuevo terminal con fish como intérprete de comandos.

Puedes escribir help (seguido de la tecla Intro) para mostrar la documentación de usu en tu navegador web:

Documentación de uso de fish mostrada en tu navegador web.
Documentación de uso de fish mostrada en tu navegador web.
Para parar el servidor http: Intro

Puedes ver la configuración actual en tu navegador web con el comando fish_config:

Configuración actual de fish mostrado en tu navegador web (http://localhost:8000/).
Configuración actual de fish mostrado en tu navegador web (http://localhost:8000/).
Para parar el servidor http: Intro

Fish puede procesar automáticamente las páginas man instaladas en tu sistema para mejorar la predicción y autocompretado de tus líneas de comandos. Puedes ejecutar periódicamente el comando fish_update_completions para actualizar el completado automático que, por defecto, será guardado en ~/.local/share/fish/generated_completions/.

Finalmente, si quieres eliminar el mensaje de bienvenida de fish que aparece por defecto:

Un nuevo terminal con fish como intérprete de comandos con el mensaje de bienvenida por defecto.
Un nuevo terminal con fish como intérprete de comandos con el mensaje de bienvenida por defecto.

Ejecuta el siguiente comando:

$ echo "set -g -x fish_greeting ''" >> ~/.config/fish/config.fish
Un nuevo terminal con fish como intérprete de comandos sin el mensaje de bienvenida por defecto.
Un nuevo terminal con fish como intérprete de comandos sin el mensaje de bienvenida por defecto.

Si quieres añadir un mensaje de bienvenida personalizado en lugar de eliminar el mensaje por completo, inserta el texto de desees entre las comillas simples (''):

$ echo "set -g -x fish_greeting '¡Hola mundo!'" >> ~/.config/fish/config.fish
 Un nuevo terminal con fish como intérprete de comandos con un mensaje de bienvenida personal.
Un nuevo terminal con fish como intérprete de comandos con un mensaje de bienvenida personal.

Recuperando bash

Si quieres alternar temporalmente con el intérprete de comandos bash durante una sesión, ejecuta:

$ bash
Escribe exit para volver a fish.

Si quieres reestablecer a bash como tu intérprete de comandos por defecto de forma permanente:

$ chsh -s /bin/bash

Para reestablecer permanentemente a bash como intérprete de comandos de otro/a usuario/a:

$ su -c 'chsh -s /bin/bash nombre-de-usuario'
Si $ su -c 'comando' no funciona, prueba con $ sudo comando.

Miguel Menéndez

Administrador de sistemas, auditor de redes y seguridad.