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.
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.
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!
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.
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 !!!!
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».