Una mejor experiencia de Linux con la shell Fish

Han pasado los días de comandos crípticos y sintaxis rígida. ¿Por qué gastar más tiempo descifrando páginas de manual que escribiendo scripts o navegando por tu sistema? Acepta el poder y la simplicidad del shell fish, tu boleto hacia una experiencia de Linux más fluida e intuitiva.

Aprende a transformar tu viaje en Linux con el shell fish, desde su interfaz amigable hasta sus amplias opciones de personalización.

¡Dale la bienvenida a flujos de trabajo simplificados y una nueva confianza en tus habilidades en Linux!

Requisitos previos

Antes de empezar, tómate un momento para asegurarte de tener cubiertos los siguientes elementos esenciales para seguir este tutorial:

  • El Shell Fish está instalado en tu máquina: este tutorial utiliza fish-3.7.0, la última versión hasta la fecha de esta redacción.
  • A Linux system – This tutorial uses an Ubuntu 22.04 LTS for demonstrations, but other distributions will work.

Explorando Validaciones de Comandos, Autocompletado y Sugerencias

Con el shell fish instalado, sumérgete en él para ejecutar comandos sin problemas. El shell fish ofrece retroalimentación en tiempo real y sugerencias contextuales para comandos, nombres de archivos y argumentos.

Pero primero, necesitarás acceder al shell fish antes de explorar las validaciones de comandos, autocompletado y sugerencias.

Para explorar esta función que te permite identificar y corregir errores antes incluso de ejecutarlos, lleva a cabo lo siguiente:

1. Abra una terminal y ejecute el siguiente comando fish para acceder al shell de fish.

fish
Accessing the fish shell

2. A continuación, escriba la primera letra del comando ls para intentar listar todos los archivos en su directorio actual.

Como se muestra a continuación, la letra ‘l‘ se vuelve roja ya que el shell de fish no lo reconoce como un comando válido. Esta pista visual inmediata indica que hay algo mal con el comando.

¡Pero no se preocupe! Gracias a la sugerencia automática, la letra ‘s‘ aparece atenuada, sugiriendo el comando correcto.

Testing command validation

3. Ahora, presione la flecha derecha o las teclas Ctrl+F para aceptar el comando ls sugerido automáticamente.

Observe que la letra ‘l’ ha cambiado de rojo a azul porque el shell de fish ahora reconoce su comando como ls.

Accepting the auto-suggested command

Definición de Alias de Comandos en el Archivo de Configuración de Fish

Además de la retroalimentación en tiempo real y las sugerencias contextualmente conscientes, fish ofrece una forma poderosa y flexible de personalizar su entorno de línea de comandos: el archivo de configuración de fish. A diferencia de otros shells que pueden usar múltiples archivos de configuración, fish principalmente utiliza un solo archivo llamado config.fish ubicado en el directorio ~/.config/fish/.

Para ver cómo afectan las configuraciones al shell de fish, comience definiendo alias de comandos de la siguiente manera:

1. Abra el archivo de configuración de fish usando su editor de código o texto preferido, como nano o vim, pero este tutorial utiliza el primero.

nano ~/.config/fish/config.fish

Una vez abierto, verás el contenido inicial del archivo de configuración de la shell fish, que puede contener configuraciones predeterminadas o estar relativamente vacío. Este estado inicial depende de si tú o el proceso de configuración de tu sistema han agregado configuraciones anteriormente.

El archivo podría incluir solo comentarios o bloques condicionales básicos para nuevas instalaciones, como el siguiente.

Opening the fish configuration file

2. Dentro del bloque if, agrega la siguiente function, guarda los cambios y cierra el editor.

En este punto, estás creando configuraciones personalizadas en el archivo de configuración de fish, y esta función define un alias (c) para el comando clear.

# Esta función crea un alias para el comando "clear"
function c
    clear
end

? Nota: Cada función definida tiene un archivo .fish correspondiente en el directorio ~/.config/fish/functions/ (es decir, c.fish).

Creating an alias for the clear command

3. Ejecuta el siguiente comando para source el archivo de configuración (config.fish).

Este comando no muestra salida en la terminal, pero aplica los cambios de configuración a tu sesión actual.

? Este archivo de configuración de fish se ejecuta automáticamente cada vez que se inicia una nueva sesión de fish y es el lugar perfecto para definir personalizaciones de la shell.

source ~/.config/fish/config.fish

4. Posteriormente, escribe c en el indicador para verificar tus cambios.

Observa cómo la letra ‘c’ se vuelve azul ya que la shell de fish la reconoce como el comando clear. Este comportamiento indica un cambio exitoso en la configuración de fish.

¿Ves cómo la letra ‘c’ se vuelve azul? Ese cambio se debe a que la shell de fish reconoce la letra ‘c’ como el comando clear. Este comportamiento señala una actualización exitosa en tu configuración de fish.

Ahora, ¿por qué no configurar algunos alias más para esos confiables comandos a los que sigues recurriendo cada vez que te apetece?

Verifying the newly created alias for the clear command works

Personalización del Prompt de la Shell de Fish

Además de configurar alias para operaciones más suaves, fish te da el poder de personalizar tu indicador, como agregar un toque personal a tu shell. En lugar de largas rutas de directorio, disfruta de un indicador más limpio y organizado.

Para personalizar el indicador de la shell de fish, ejecuta las siguientes acciones:

1. Abre el archivo de configuración de fish (~/.config/fish/config.fish) y agrega la siguiente función.

Esta función personaliza tu indicador de la shell de fish para mostrar (echo) un signo de dólar ($) seguido de un espacio.

# Personalizando el indicador de fish
function fish_prompt
    echo '$ '
end
Customizing the fish shell prompt

2. Guarda los cambios en el archivo de configuración de fish y sale del editor.

3. Ahora, source el archivo de configuración para aplicar tus cambios.

source ~/.config/fish/config.fish

Una vez que lo hayas sourceado, verás los cambios en el indicador como en la siguiente captura de pantalla.

Sourcing the fish configuration file to apply the shell prompt changes

Perdurando Cambios entre Sesiones

Has visto cómo crear personalizaciones en el shell de fish. Pero hay algo que tener en cuenta: Estas configuraciones solo están disponibles en la sesión actual.

¿Qué sucede una vez que cierras la sesión actual y abres una nueva? ¡Puf! ¡Todas tus configuraciones meticulosamente elaboradas se han ido!—qué lástima, ¿verdad? Pero no temas, aún hay esperanza. ¡Deja que el comando funcsave rescate tus configuraciones del olvido!

Para persistir tus configuraciones entre sesiones, procede con lo siguiente:

1. Abre el archivo de configuración de fish, y añade el comando funcsave a cada function junto con el nombre de la función, así:

Appending the funcsave command to persist functions across sessions

2. Guarda tus cambios, y cierra el editor y la terminal.

3. Abre una nueva sesión de terminal, y ejecuta el comando fish a continuación para acceder al shell de fish

fish

Si los comandos funcsave que añadiste funcionan para persistir tus configuraciones, verás mensajes como los siguientes.

Accessing the fish shell to verify the configurations persist across sessions

Configuración y Persistencia de Variables de Entorno

Aunque las funciones de persistencia son geniales, gestionar valores accesibles globalmente lleva la escritura de scripts de shell a otro nivel: establecer variables de entorno. A diferencia de los shells tradicionales que dependen de export, fish utiliza set con opciones para controlar el alcance de la variable y el comportamiento de exportación.

Pero hay un truco, ¿sabes? ¡Ah, lo adivinaste bien! Una variable establecida mediante el comando set en la terminal solo es accesible en la sesión actual.

Para establecer y persistir variables de entorno, la bandera -gx será útil de la siguiente manera:

1. Agrega el siguiente comando para set la variable MY_VARIABLE en el archivo de configuración de fish como global. A continuación se muestra cómo funciona la bandera -gx:

  • -g – Hace que la variable sea global, accesible desde cualquier ámbito dentro del mismo entorno de usuario.
  • -x – Exporta la variable, haciéndola disponible para cualquier comando externo o programas lanzados desde fish.
# Establecer MY_VARIABLE globalmente y exportarla
set -gx MY_VARIABLE HelloWorld
Setting an environment variable in the fish configuration file

2. Guarda los cambios de configuración, luego cierra el editor y la terminal.

3. Abre una nueva sesión de terminal, accede al shell de fish y ejecuta el siguiente comando para confirmar los cambios.

echo $MY_VARIABLE

La salida a continuación confirma que los cambios han surtido efecto en todas las sesiones.

Verifying variable persistence

4. Una vez confirmado, añade el siguiente comando set al archivo de configuración de fish, guarda los cambios y cierra el editor.

Este comando hace que la variable MY_UNIVERSAL_VARIABLE sea global en todas las sesiones, incluso después de reinicios.

# Establecer MY_UNIVERSAL_VARIABLE como universal y exportarlo
set -Ux MY_UNIVERSAL_VARIABLE universal

Observa cómo funciona la bandera -Ux a continuación:

  • -U – Hace que la variable MY_UNIVERSAL_VARIABLE sea universal, asegurando que se comparta en todas las sesiones actuales y futuras del terminal, incluyendo las de diferentes usuarios.
  • -x – La variable se exporta a los procesos secundarios, haciéndola accesible para cualquier comando o script invocado desde la sesión actual.
Setting a universal environment variable in the fish configuration file

5. Abre una nueva sesión de terminal, accede al shell de fish y ejecuta el comando echo a continuación para verificar los cambios.

echo $MY_UNIVERSAL_VARIABLE

Si todo sale bien, tendrás la siguiente salida, indicando que los cambios han surtido efecto en todas las sesiones.

Verifying universal variable persistence

? Más allá del archivo de configuración de fish, aprovecha fish_config en el terminal para personalizaciones rápidas y automáticas. Este comando abre una interfaz web en tu navegador, permitiendo ajustes rápidos, modificaciones de configuraciones y gestión de funciones y variables de forma amigable para el usuario.

Gestionando complementos de Fish con el gestor de paquetes Fisher

La terminal de peces es impresionante por sí sola, ¿verdad? Pero ¿adivina qué? Cuando comienzas a integrar complementos, se vuelve aún más potente. Estos complementos amplían las capacidades de la terminal de peces, introduciendo nuevos comandos, utilidades e integraciones para mejorar significativamente tu experiencia en la línea de comandos.

Un buen ejemplo es Fisher, un gestor de paquetes diseñado para la terminal de peces. Este complemento está construido teniendo en cuenta el rendimiento y la simplicidad, y es ligero.

? Fisher es ligero en la gestión de complementos de la terminal de peces y no se puede comparar directamente con los gestores de paquetes a nivel de sistema. Esta distinción es evidente en cuanto al tamaño y la complejidad de los paquetes que gestiona.

Para gestionar los complementos de la terminal de peces, primero debes instalar Fisher siguiendo los pasos detallados a continuación:

Abre tu terminal, accede a la terminal de peces y ejecuta el siguiente comando para descargar e instalar Fisher. Este comando obtiene el script de instalación de Fisher y lo redirige a source, que ejecuta el script dentro de la sesión actual de la terminal de peces mediante curl.

curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

Una vez instalado, verás la siguiente salida.

Installing the Fisher package manager

Ahora, ejecuta el siguiente comando fisher a continuación para confirmar la instalación, viendo la --version actualmente instalada de Fisher en tu sistema.

fisher --version
Confirming the installed Fisher version

Instalando el complemento GitNow

Ahora que tienes Fisher funcionando, ¿qué sigue? ¿Qué tal si fortaleces tu shell de Fish con algunos plugins geniales? GitNow, por ejemplo, es un conjunto de herramientas que potencia tu flujo de trabajo de Git dentro de la shell de Fish, lo cual resulta tentador.

GitNow ofrece comandos simplificados para tareas rutinarias de Git, mejorando la productividad y simplificando tu rutina de comandos de Git.

Para instalar GitNow usando el gestor de paquetes Fisher, sigue estos pasos:

1. En tu shell de Fish, ejecuta el siguiente comando fisher para instalar el plugin de GitNow (joseluisq/gitnow).

Este comando le indica a Fisher que obtenga e integre GitNow en tu configuración de Fish, haciendo que su conjunto de atajos de Git estén disponibles de inmediato.

fisher install joseluisq/gitnow
Installing the GitNow plugin

2. Una vez instalado, ejecuta el comando gitnow a continuación para confirmar que GitNow está instalado correctamente.

Este comando muestra la versión actualmente instalada de GitNow, pero solo si los comandos de GitNow son reconocidos en tu shell.

gitnow --version
Verifying the GitNow installation

3. Por último, ejecuta este comando fisher para listar todos los plugins que Fisher gestiona, incluido GitNow.

fisher list

A continuación, puedes ver el plugin de GitNow y el propio plugin de Fisher.

Viewing all plugins managed by Fisher

Eliminación de Plugins de Fish Shell

¿Tu shell de Fish está ahogada en plugins? ¿Como si tuvieras que ordenar el desorden para encontrar lo que necesitas? Ordena tu entorno de shell de Fish eliminando los plugins innecesarios.

Para eliminar un complemento gestionado por Fisher en tu shell de fish, sigue estos pasos:

1. Ejecuta el siguiente comando para listar todos los complementos instalados actualmente.

fisher list

Escoge uno de la lista que deseas eliminar.

Viewing all installed plugins

2. A continuación, ejecuta el comando fisher remove a continuación, seguido del nombre del complemento (joseluisq/gitnow) para eliminarlo.

fisher remove joseluisq/gitnow

Este comando indica a Fisher desinstalar el complemento GitNow de tu entorno de shell de fish.

Removing the GitNow plugin

3. Ahora, ejecuta el mismo comando fisher list para confirmar que el complemento GitNow se ha eliminado correctamente.

fisher list

El complemento GitNow ya no debería aparecer en la lista de complementos instalados.

Verifying the GitNow plugin removal

Desinstalación del Gestor de Paquetes Fisher

Como has visto, el gestor de paquetes Fisher es realmente útil. Pero desinstalarlo puede ser tu mejor opción si te encuentras insatisfecho o tienes problemas con Fisher.

Para desinstalar Fisher completamente de tu shell de fish, sigue los siguientes pasos:

Ejecuta el comando a continuación para listar y eliminar fisher y todos los complementos instalados mediante Fisher.

fisher list | fisher remove
Listing and removing all plugins

Alternativamente, ejecuta el siguiente comando para eliminar solo fisher en sí mismo.

fisher remove jorgebucaran/fisher
Removing Fisher only

Explorando el Gestor de Paquetes Oh My Fish

Cuando ya estás navegando con Fisher, ¿por qué considerar Oh My Fish? Ya has experimentado el poder de los complementos de la concha de pescado con Fisher. Pero aquí está el truco: este marco abre un nuevo ámbito de personalización para la concha de pescado, ofreciendo una extensa colección de temas y complementos.

Para ver lo que Oh My Fish tiene reservado para ti, primero instala este gestor de paquetes con lo siguiente:

Ejecuta el siguiente comando curl para descargar y ejecutar el script de instalación de Oh My Fish (https://get.oh-my.fish) dentro de la concha fish.

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

Si tienes éxito, tendrás una salida similar a la siguiente.

Installing the Oh My Fish package manager

Una vez instalado, ejecuta el siguiente comando omf para verificar la versión instalada de Oh My Fish.

omf --version

A successful response, as shown below, indicates that Oh My Fish is ready and waiting to transform your fish shell experience.

Verifying the Oh My Fish installation

Personalización del entorno con temas de Oh My Fish

¿Estás cansado del aspecto habitual de la concha de pescado? ¿Por qué no añadir un toque de personalidad? Dale a tu entorno de concha de pescado un cambio de imagen con temas frescos y personalizados de Oh My Fish.

Para personalizar tu entorno de concha de pescado, debes instalar temas con estos pasos:

1. Abre el archivo de configuración de la concha de pescado y elimina la función fish_prompt que define cómo se muestra tu indicador. Al hacerlo, te aseguras de que el indicador personalizado que has establecido no entre en conflicto o anule los temas proporcionados por Oh My Fish.

? Los temas vienen con indicaciones únicas cruciales para su apariencia y función. Deshabilitar tu indicación personalizada (fish_prompt) asegura que el tema de Oh My Fish elegido se integre completamente en el diseño y las características de tu shell de fish.

2. A continuación, elimina (rm) el archivo ~/.config/fish/functions/fish_prompt.fish. Este comando no produce ninguna salida, pero al eliminar este archivo aseguras que la shell de fish vuelva a su indicación predeterminada.

rm ~/.config/fish/functions/fish_prompt.fish

3. Ejecuta este comando source para que los cambios en el archivo de configuración de fish surtan efecto.

source ~/.config/fish/config.fish
Sourcing the fish configuration file

4. Ahora, ejecuta el siguiente comando omf para descubrir el tema perfecto para tu shell de fish.

omf theme

Elige un tema que desees integrar en la shell de fish (por ejemplo, cbjohnson).

? Visita el repositorio oficial de GitHub para ver cómo luce cada tema antes de instalarlo.

Listing available Oh My Fish themes

? Mejora tu shell de fish con complementos ejecutando el siguiente comando para instalar plugins. Visita el repositorio de GitHub de OMF para ver una lista de plugins para instalar. omf install <nombre_del_plugin>

5. Después, ejecuta el siguiente comando para instalar el tema que elegiste en el paso cuatro (cbjohnson).

omf install cbjohnson

Una vez instalado, tu indicador cambia inmediatamente, como se muestra a continuación.

Installing an Oh My Fish theme (cbjohnson)

? Consejo: Cambia rápidamente entre temas cuando tengas dos o más ejecutando el siguiente comando. omf theme <nombre_del_tema>

Desinstalación de Oh My Fish

Oh My Fish es una joya para mejorar la atmósfera de tu terminal. Pero si alguna vez deseas un cambio de escenario o probar algo nuevo, desinstalar Oh My Fish le dará a tu shell de fish un nuevo comienzo.

Para desinstalar Oh My Fish, sigue los siguientes pasos:

1. Ejecuta los siguientes comandos rm para eliminar todos los archivos relacionados con Oh My Fish.

rm -rf ~/.local/share/omf
rm -rf ~/.config/omf

Una vez eliminados, verás que desaparece el tema que tenías instalado inicialmente.

Deleting Oh My Fish-related files

2. A continuación, ejecuta cada uno de los siguientes comandos para eliminar más archivos relacionados con Oh My Fish.

Estos comandos no tienen salida, pero al eliminar estos archivos te aseguras de que se eliminen todos los restos de Oh My Fish de tu sistema.

rm -rf ~/.local/share/omf/pkg/omf/functions/omf.fish
rm ~/.config/fish/conf.d/omf.*

3. Ahora, ejecuta el siguiente comando omf para verificar la eliminación.

omf --version

Verás un error como el siguiente, que indica que el comando omf no se encuentra y que Oh My Fish ha sido desinstalado por completo.

Verifying the Oh My Fish deletion

Establecer Fish como la Shell Predeterminada

Si has disfrutado usando la shell de fish para mejorar tu experiencia en Linux, ¿por qué no configurarla como tu shell predeterminada? De esta manera, te ahorras el trabajo de cambiar cada vez que abras una nueva terminal.

Para establecer fish como tu shell predeterminada, sigue estos pasos:

1. Ejecute el siguiente comando para encontrar la ruta de which donde se encuentra la shell fish.

which fish

Copie la ruta al portapapeles, ya que la necesitará en los siguientes pasos.

Finding the path to the fish shell

2. A continuación, ejecute el siguiente comando para agregar fish a la lista de shells aceptables en /etc/shells.

echo "/usr/bin/fish" | sudo tee -a /etc/shells
Adding fish to the list of acceptable shells

3. Por último, ejecute el comando chsh a continuación para cambiar su shell predeterminada a fish (/usr/bin/fish).

chsh -s /usr/bin/fish

Cuando reinicie su máquina, tendrá fish como su shell predeterminada.

Changing the default shell to fish

? Consejo: Cambie de nuevo de fish a otra shell como Bash como su predeterminada repitiendo todos los pasos de esta sección. Asegúrese de especificar la ruta a Bash en los pasos dos y tres, luego reinicie su máquina para que se apliquen los cambios.

Conclusión

A lo largo de este tutorial, has profundizado en la esencia de la shell fish, descubriendo sus potentes características y opciones personalizables. Desde definir alias hasta personalizar indicadores y persistir variables de entorno hasta administrar complementos, la shell fish ha sido tu fiel compañera.

Has obtenido conocimientos sobre cómo transformar tu experiencia en Linux con el gestor de paquetes Oh My Fish. Además, has aprendido cómo descubrir e instalar fácilmente nuevos complementos y temas, expandiendo la funcionalidad y estética de tu entorno de shell fish.

Ahora que has explorado los conceptos básicos del shell de pescado, sumérgete más profundamente y desbloquea todo su potencial. ¿Por qué no experimentar con indicadores personalizados como Powerline o Starship para darle a tu shell un toque personalizado?

Source:
https://adamtheautomator.com/fish-shell/