Underc0de

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: ANTRAX en Agosto 05, 2014, 09:40:36 AM

Título: Fish Shell, la terminal interactiva y amigable
Publicado por: ANTRAX en Agosto 05, 2014, 09:40:36 AM
(http://blog.desdelinux.net/wp-content/uploads/2014/08/saydesdelinux.png?658451)

No es un secreto para nadie que el uso de la terminal es algo que ha caído mucho con el paso de los años, hay que admitirlo hoy día son pocas las tareas que requieren de su uso. Yo mismo soy alguien que evita usarla en cierta medida, la verdad es que por mas que quiera, siempre termino dándole uso porque se me hace más rápido que gráficamente, y para desarrollar la cosa es aún mas necesaria (no se como hay gente que programa a pura interfaz).

En fin, si hay algo que no me gusta de ninguna distro es bash, y no porque sea malo sino porque me parece feo, y lo feo no es bonito (¡no me digas! D. La cosa es que Bash no me ayuda a agilizar nada, y cuando uso el shell lo hago precisamente para moverme rápido sin tener que hacerme la vida de cuadritos, cosa que con bash suele pasar, ¿Por qué? Pues porque el poder de bash radica en que puedes programarle todo lo que te da la gana siempre y cuando sepas hacerlo desde cero, por ende es poderosísima pero también jodidísima. Bash no tiene (por defecto, cabe destacar) predicción de comandos, ni coloreado, ni corrección, ni atajos, ni plugins ni nada, es un cuchillo de caza afilado; cómo lo uses es tu problema.

Por otro lado tenemos a Zsh, un shell tipo bash super vitaminado y con ciertos superpoderes, muy extensible y capaz, pero aún muy vainilla y dependiente del omnipresente OhMyZsh una buena colección de plugins que explota el poder de Zsh y que sin ella, es como tener una navaja suiza y un instructivo complejo de como usarla, no mucho más.

Ahora bien después de tanto hablar sobre las shell's anteriores, es justo hablar de la estrella en el artículo, Fish.

Fish es simplemente hermosa

Desde el vamos no te tienes que complicar configurando absolutamente nada, por defecto ya viene coloreando tu terminal, auto completando tus comandos y permitiendo llevar todo esto de las configuraciones de manera muy simple e intuitiva mediante una interfaz web (local, claro está) en donde tendrás al alcance absolutamente todo lo que quieras modificar; desde el historial de comandos, hasta las funciones a ejecutarse por defecto, colores, autocompletado inteligente y/o personalizado, ¿Ya les dije que el auto completado es inteligente y simplemente aprende tus comandos? ¡No tienes que decirle que haga nada, el solito aprende!

Pero para que hacerme caso a mi cuando los desarrolladores te explican por qué usar fish:

Fish is a fully-equipped command line shell (like bash or zsh) that is smart and user-friendly. fish supports powerful features like syntax highlighting, autosuggestions, and tab completions that just work, with nothing to learn or configure.

If you want to make your command line more productive, more useful, and more fun, without learning a bunch of arcane syntax and configuration options, then fish might be just what you're looking for!
En español sería mas o menos así:

Fish es un shell para la línea de comandos (como bash o zhs) full equipo, es inteligente y amigable. Fish posee poderosas propiedades como el resaltado de sintaxis, auto sugerencias y completado con la tecla tab, y todo esto simplemente funciona, sin nada que aprender ni configurar.

Si quieres hacer tu linea de comandos mas productiva, usable y divertida, sin tener que aprender un puñado de configuraciones en sintaxis arcana y fea, entonces fish puede ser justo lo que estabas buscando

(http://blog.desdelinux.net/wp-content/uploads/2014/08/aprende.png?658451)

(http://blog.desdelinux.net/wp-content/uploads/2014/08/novalido.png?658451)

¿Así o mas?

Soy power user, convénceme...

Que Fish venga con varias cosas por defecto y sea tan simple de usar no la hace menos poderosa, de hecho algo en lo que se enfocaron fue en el sane scripting, o scripting sano... ya saben, en vez de una sintaxis poco amigable a la lectura humana, se enfocaron en hacer una mucho mas simple de entender y no menos poderosa.

De hecho, Fish posee todas las posibilidades de bash o zsh, y todas significa todas, desde alias hasta funciones y demás, por lo que si quieres programar tus propias funciones del shell, crear scripts que hagan (o deshagan) algo puedes hacerlo igualito como lo harías en las anteriores mencionadas, vas al archivo de configuración, programas, guardas y ahí lo tienes... para muestra un botón:

Así iteras sobre un array o una lista en fish:

Código (bash) [Seleccionar]
for file in *.txt
cp $file $file.bak
end


Así cometes estupideces con los bucles:

Código (bash) [Seleccionar]
while true
echo Soy un tonto y escribo loops infinitos
end


Aquí, if termina con end (como la gente esperaría), y no con "fi":

Código (bash) [Seleccionar]
if grep fish /etc/shells
echo Found fish
else if grep bash /etc/shells
echo Found bash
else
echo Got nothing
end


Y solo porque si, un switch:

Código (bash) [Seleccionar]
switch (uname)
case Linux
echo Hi Tux!
case Darwin
echo Hi Hexley!
case FreeBSD NetBSD DragonFly
echo Hi Beastie!
case '*'
echo Hi, stranger!
end


Y la verdad es que todo es cuestión de creatividad, porque puedes hacer de todo con Fish.

¿Como la instalo y como la uso?

Tan simple como:

Código (bash) [Seleccionar]
apt-get install fish

pacman -S fish

yum install fish

emerge fish


o te vas a la web oficial y te descargas tu paquete.

Usarla no tiene mayor ciencia, una vez instalada solo debes ponerla por defecto, juego de niños:

Código (bash) [Seleccionar]
chsh -s /usr/bin/fish

Eso es todo para ponerla a funcionar, solo cierra y abre tu terminal, y sé feliz, no necesitas configurar nada.

Nano es cool y te da un extra, solo porque si

Ah, sí, antes de que lo olvide... Fish tiene su propio OhMyZsh, y se llama OhMyFish (¡dios mio que creativos!). Bueno, de hecho es una librería de plugins algo nueva que está fuertemente inspirada en OhMyZsh y su buena manera de hacer las cosas, de hecho es ridículamente simple de instalar, solo necesitas tener git instalado y luego hacer:

Código (bash) [Seleccionar]
curl -L https://github.com/bpinto/oh-my-fish/raw/master/tools/install.fish | fish

Y tendrás tu librería de plugins lista para usar.. ¿Cómo la usas? tan simple como ir a

~/.config/fish/config.fish y ahí declarar que quieres usar, ejemplo, plugins y un theme:

Código (bash) [Seleccionar]
# Path to your oh-my-fish.
set fish_path $HOME/.oh-my-fish

# Theme
set fish_theme toaster

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-fish/plugins/*)
# Custom plugins may be added to ~/.oh-my-fish/custom/plugins/
# Example format: set fish_plugins autojump bundler

# Path to your custom folder (default path is $FISH/custom)
#set fish_custom $HOME/dotfiles/oh-my-fish

# Load oh-my-fish configuration.
. $fish_path/oh-my-fish.fish

# Plugins
set fish_plugins git node sublime


En donde lo único que realmente ustedes ponen es set fish_theme y set fish_plugins, lo demás está puesto por OhMyFish y documentadito en sus comentarios.

La verdad es que no hay mucho más, si quieren buscar plugins vayan a la página de la librería (que ya puse arriba) y vean la carpeta de plugins, todos dicen que hacen... e igual con los temas. Realmente con todo esto dicho (que no es mucho), se tiene más que suficiente para hacer lo que se quiera en Fish y más.

Fuente: fishshell.com
Título: Re:Fish Shell, la terminal interactiva y amigable
Publicado por: Chris en Agosto 06, 2014, 10:13:29 AM
Gracias por la info! Se ve interesante, voy a revisar que tal es fish.
Título: Re:Fish Shell, la terminal interactiva y amigable
Publicado por: iMex en Noviembre 13, 2014, 08:15:02 PM
Justo estaba buscando algo así
Título: Re:Fish Shell, la terminal interactiva y amigable
Publicado por: Y3K en Noviembre 14, 2014, 12:10:25 AM
Recuerdo que una vez me dieron ganas de probarla.

Pero ahorita estoy con zsh y no lo cambio, hahaha :P
Título: Re:Fish Shell, la terminal interactiva y amigable
Publicado por: rotten_ en Junio 15, 2015, 07:19:05 PM
uso habitualmente zsh, pero ahce rato que me dieron ganas de probar fish...con esto, creo que me decido a ver que tal...saludos
Título: Re:Fish Shell, la terminal interactiva y amigable
Publicado por: zaphiel en Septiembre 14, 2016, 12:31:46 PM
Se ve interesante,  pero estoy encantado con zsh,  usabas zsh antes de fish? @ANTRAX

Desde mi OnePlus One