¡Vámonos de pesca con Fish Shell!

El otro día estaba viendo un video en Youtube y salió a colación Fish Shell y me pareció interesante. Digo, cuando empezamos con Linux todos hemos comenzado con Bash y nunca había tenido la curiosidad de probar algo distinto.

Ahora me pregunto ¿Dónde había estado todo este tiempo? Para empezar esta cosa parece adivinar lo que voy a escribir. Sus sugerencias son muy acertadas y me ahorra una buena cantidad de tiempo. Lo malo es que me esta haciendo algo flojo en la terminal.

La página web de Fish Shell dice “un shell de línea de comandos para los años 90s” así que solo tengo algunos 30 años de retraso, pero más vale tarde que nunca.

Todavía le estoy agarrando el modillo, pero en este artículo comentaré lo que le vaya descubriendo.

Convertir a fish en el shell por default.

Al principio no quería hacer un cambio muy drástico, quería conservar Bash por si había algún problema de compatibilidad o inesperado, pero quería que fish fuera el interprete de comandos por default en mi sesión de usuario.

Para lograrlo hay que agregar esto al archivo .bashrc de mi carpeta home.

if [[ $(ps --no-header --pid=$PPID --format=cmd) != "fish" && -z ${BASH_EXECUTION_STRING} ]]
then
    exec fish
fi

De esa forma, todas las terminales que abra en mi instalación de Manjaro iniciarán con Fish. Si quiero regresar a como estaba antes basta con borrar estas líneas del archivo y como si nada hubiera pasado.

fish shell listo y funcionando.
¡Bienvenido a fish!

Declarar un alias

Me di cuenta de inmediato de que mi alias de actualización de Manjaro no funcionaba en fish, así que tuve que aprender a agregar estos comandos personalizados.

# Definir un alias en el shell
alias rmi "rm -i"

# Definir un alias en el archivo de configuración
alias rmi="rm -i"

# Esto equivale a introducir la siguiente función:
function rmi
    rm -i $argv
end

# Luego, para guardarlo usamos funcsave:
funcsave rmi

Si teclean el comando fish_config podrán ver todos los alias declarados en la sección functions directamente en el navegador junto con otras opciones de configuración.

lista de funciones o alias declarados en fish.
Configuración desde una página web.

Para personalizar los mensajes de inicio de fish

En el video que les mencioné al principio aparecía el resumen clásico de la computadora al teclear la instrucción neofetch .

Bueno pues para ejecutar algo al momento de abrir la terminal hay que editar el archivo ~/.config/fish/config.fish

if status is-interactive
    # Commands to run in interactive sessions can go here    
    neofetch    
end

Y si esta vistoso, pero con el tiempo aburre. Digo ¿Qué tan seguido cambio mi equipo? Así que decidí probar algo nuevo.

¿Se acuerdan de la vaquita que muestra un mensaje? pues decidí mezclarlo con fortune que muestra citas como si fuera una galleta de la fortuna y como la mayoría de esos mensajes están en inglés, pues de una vez traducirlos al español.

Okey, parece demasiado, pero todo eso se puede resumir con esta instrucción.

fortune -s | trans -b :es | cowsay 

 ____________________________________ 
/ Excusa BOFH # 15:                  \
|                                    |
\ anomalía de enrutamiento temporal /
 ------------------------------------ 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Y al final quedó así:

if status is-interactive
    # Commands to run in interactive sessions can go here    
    fortune -s | trans -b :es | cowsay -f tux
end

Buscar en el historial

Como mencioné al principio, esta cosa parece adivinar lo que voy a escribir. Desde la primer letra aparece alguna sugerencia. Si no es la correcta, puedes buscar simplemente presionando la flecha arriba del teclado

O con el comando history

history search “búsqueda”

Regresar a Bash

Me pasó que tuve problemas para iniciar un entorno virtual de Python, me apareció un mensaje muy similar a este:

bin/activate (line 47): Unsupported use of '='. In fish, please use 'set VIRTUAL_ENV

Hay dos opciones. Regresar a Bash momentáneamente tecleando en la terminal bash y trabajando normalmente como si nada hubiera pasado o activar el entorno virtual de la siguiente forma:

source bin/activate.fish

Cambiar el navegador por default

El comando fish_config abre una ventana en el navegador por default. Pero el otro día me encontré con el problema de que abría el editor de texto en lugar del navegador. Así que tuve que revisar las variables de entorno y efectivamente había un problema.

$ printenv | grep BROWSER

BROWSER=/usr/bin/chromium

La variable BROWSER apuntaba a Chromium, mi navegador antiguo en lugar del nuevo y flamante Chrome así que para corregirlo en Manjaro hay que editar el archivo /etc/environment

#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
LANG=es_MX.UTF-8
BROWSER=/usr/bin/google-chrome-stable

# Para poder hacer downgrade a los paquetes de Manjaro.
# export DOWNGRADE_FROM_ALA=1

Y eso es todo amigos, con estos pequeños ajustes me he sentido muy cómodo usando fish, hasta parezco “juaker“ usando la terminal.

¡Hasta la próxima aventura!

Enlaces.

3 comentarios en «¡Vámonos de pesca con Fish Shell!»

  1. Bueno, un servidor, cuando abre la terminal, le aparece cierta información que la dá precisamente el programa neofetch. Es muy fácil instalarlo con «sudo pacman -S neofetch». Igualmente se puede instalar «screenfetch».
    Cuando abro la terminal me aperece toda la información que proporciona neofetch tirando la orden neofetch. Pero para que me aparezca sin necesidad de tirar el susodicho comando se puede instalar con un scrip como el siguiente:

    echo "neofetch" | tee -a ~/.bashrc

    Debo aclarar que el mencionado script no es mío, ni mucho menos. Mis conocimientos no están a esa altura, y ya me gustaría. Simplemente lo encontré por ahí de alguien que si sabe hacerlo y lo copié.

    Lo dejo aquí por si puede servirle a alguien.

    Responder
    • Hola y claro que sirve, pero para Bash.

      Es lo bonito de la terminal, el comando que compartes es el equivalente a abrir el archivo .bashrc y agregar en la última línea la instrucción neofetch.

      Tengo que reconocer que neofetch se ve muy padre en los screenshots, pero no para el diario.

      Saludirijillos !!!!

      Responder
      • Bueno para un simple mortal como yo bash es la única alternativa que conozco, y la que instalo para Linux. En cualquier caso agradezco tus aplicaciones y las leo todas. Muchas gracias, por tus consejos y por tu «savoir bien faire».

        Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.