El intérprete de línea de comandos ha sido desde tiempos inmemoriales un fiel aliado del administrador de redes, desarrollador u otro curioso de los sistemas de software. Pero para aquellos que se deciden a tomar estos caminos constituye un obstáculo significativo a vencer, aún mayor si la persona en cuestión es un poco impaciente y desea obtener resultados rápidos sin profundizar mucho en todas las características de una aplicación o comando. Si usted se encuentra dentro de ese grupo de personas, aquí le traigo algo que de seguro le ayudará a aumentar su productividad y le facilitará de sobre manera la vida.
Fish Shell es una herramienta similar a SH o Bash pero a diferencia de estos y según sus autores es más amigable al usuario y posee una mejor integración con el sistema. Veamos algunas de sus funcionalidades más interesantes.
Autocompletamiento:
No más Ctrl+R, en Fish esta característica se encuentra siempre habilitada y completa tanto comandos y sus argumentos como directorios. Probemos unos comandos, las combinaciones de tecla las pondré entre corchetes:
Al presionar [flecha derecha del teclado] se completa con el comando más reciente que coincida con el criterio.
Con las flechas arriba y abajo del teclado podremos navegar entre los diferentes comandos similares existentes en el historial.
Completamiento con páginas del manual:
Supongamos que vamos a cambiar los permisos de un fichero pero solo recordamos que el comando comenzaba con “ch”, pues lo escribimos y oprimimos [Tab].
Cuantos “man
Guiones más claros:
Es shell hereda la mayoría de las instrucciones de bash y sh pero elimina aquellas que de una manera u otra resultas desconcertantes. Lográndose un código similar a Pascal o Python (ni un “fi” o “esac” más).
switch (uname) case Linux echo Hi Tux! case Darwin echo Hi Hexley! case FreeBSD NetBSD DragonFly echo Hi Beastie! case '*' echo Hi, stranger! end
> function say_hello echo Hello $argv end > say_hello Hello > say_hello everybody! Hello everybody!
Documentación:
Este post no pretende transformar al lector en un experto en Fish, pero esto no sería muy complejo ya que dicha herramienta cuenta con una excelente documentación que se distribuye junto con los binarios, solo debe ejecutar el comando help [solo help].
Y algo más:
Fish puede ser ejecutado tanto en Linux como en Windows o Mac y no requiere configuraciones adicionales una ves instalado. Además posee soporte VGA permitiendo representar tus comandos en unos asombrosos 256 colores diferentes.
Instalación:
Debian, Ubuntu, Nova y primos otros familiares:
sudo apt-get install Fish
OpenSuse:
zypper install fish
Establecerlo como shell predeterminado del usuario:
chsh-s /usr/bin/fish
Comentarios ( 57 )
La verdad es que es un shell muy intuitivo y práctico. Hace un tiempo que lo utilizo y solo me eh topado con ciertas limitaciones que solo eh podido realizar en BASH. Son el caso de:
workon – para la entradas de entornos virtuales de Django
export_http – para exportar el proxy al sistema
Por lo demás todo bien.
https://codecomunidades.uci.cu/raven/blog/blob/master/14-09-18%20%20fish.markdown
Y para los que no gustan de las configuraciones en la terminal, ejecuten: fish_config
@raven
Muy lento para vivir en el oeste :D. Realmente tu post está mucho más detallado, lo puedes poner como una continuación.
No fuí lento, el post es del año pasado
bueno, casi
vaya buen post
@Alexis López Zubieta
Si quieres adjuntalo para que se vea para el resto de la comunidad extra UCI, yo no lo publiqué en humanos porque últimamente me censuran.
@raven
@Alexis López Zubieta
Cuál me puede ayudar a personalizarlo, se que se le pueden adicionar detalles el fish como: hora de la pc al lado del comando, un dibujo de bienvenida, etc.
@raven
Si a mi también me censuraron un comentario y lo único que tenia era la licencia del PhpStorm
http://humanos.uci.cu/question/php/
¿Alguna respuesta Heimdall ?
Saludos.
@Heimdall
Mira en mi repo dots en codecomunidades. De ahí puedes aprender una o dos cosillas. Si lo que quieres es algo más simple, puedes usar el fish_config.
@Heimdall
para virtualenvironment hay una extención, yo la tengo. Para exportar variables usa
set -x
o sea en ves de
export http_proxy=localhost
pones
set -x http_proxy localhost
en fish hay variables universales o sea que la exportas una ves y se quedan para siempre, aunque reinicies
par eso usas set -U
por ejemplo puedes hacer
set -x -U http_proxy localhost
y eso hará que siempre tengas proxy
vez
Tengo una duda, ejectue este comando:
chsh -s /usr/bin/fish
y me dice que le comando “chsh” no exite. ¿Qué debo hacer?
Otra cosa si después quiero retornar a lo que tenía anteriormente ¿Cómo lo hago?
@Root
Esa acción no fue tomada por mí, lo único que te puedo decir es que en mi comentario estaba la respuesta a tu pregunta, quizás por eso no eran necesario más comentarios.
@raven
Lo que busco más bien es personalizarlo, tu sabe sun poco de pacotilla. Uso bastante la consola y quiero que tenga un look agradable.
@raven
Especialmente me gustaría modificar esta función: fish_greeting, para que salga un msg que yo determine y en un color de mi agrado.
@Heimdall
Ya te dije, mira mi código en codecomunidades.
@raven
Mano si puedes sé un poco más específico, eh revisado tu código en codecomunidades, pero necesito algo más explicito.
@Heimdall
Yo no fui el que hizo la pregunta, solo respondí, y tu sabes que una pregunta puede tener varias respuestas o distintos métodos de solución, así que eso que me dices no es ninguna justificación.
Disculpen que este comentario se salga del hilo de este post.
Saludos.
@Alejandro
El comando chsh es instalado (aplica a nova, ubuntu, debian) por el paquete passwd asi que debes tenerlo instalado. Intenta ponerle “sudo” delante por ejemplo:
sudo chsh alejandor -s /usr/bin/fish
En lo particular hace un buen tiempo que abandoné bash y uso zsh, que por si solo no es mucho, pero cuando se le instala oh-my-zsh se pueden obtener resultados muy muy agradables. Además lo que más me hizo utilizarlo es el soporte para el historial compartido, en bash si tienes 2 pestañas abiertas y tecleas un comando en la 2da no te autocompletará en la izquierda hasta que no la reinicies, con zsh esto no sucede, además de que tiene autocompletamiento para páginas man, subdirectorios (básico) plugins para git, mercurial, virtualenv, y un largo etc.
Creo que sería bueno que compartiéramos algunos screenshots sobre cómo se ven nuestros terminales ¿que creen?
Este es el prompt que tengo ahora mismo https://misarchivos.uci.cu/public.php?service=files&t=a13427522560964af697871cea5717d7
@Alexis López Zubieta
Gracias Alexis, me faltaba el poner “sudo”
@Root
Como dije, no tuve nada que ver con esa desición. No perdamos el hilo de este post.
publiquen el instalador para windows !!!!!
@Yosbel Marín
Para usar fish en windows tienes que tener cygwin actualizado, dudo que alguien acá en la UCI lo tenga, espero que me desmientan.
@Heimdall
Dime que quieres hacer específicamente, porque no hay un lenguaje raro para eso que me dices, es escribir una función en fish como otra cualquiera.
lo malo de fish es que te malcría y despues no quieres saber de bash 🙂
fish_config no me funciona bien 🙁
Está DPM tío, acabo de instalarlo y reinicié, y cuando inicio mi sesión lo hace como 10 veces más rápido, por cierto, se le cambia shell por defecto al usuario personal y al root y voilá!!! a disfrutar del pesca’o!!!
@Akiel
En Ubuntu el fish_config al parecer tiene los paquetes de JQuery embromados.
Tienes que configurarlo al estilo GURU…a mano :D, con la ayuda de @raven ya tengo uno que va a ser la envidia de muchos 😀 😀 😀
1 – cómo exporto variables??
2 – cómo agrego un directorio a PATH?
3 – cómo hago que sean persistentes estos cambios??
@JorgeFS
[SOLVED]
Agregar al fichero ~/.config/fish/config.fish
set -U fish_user_paths ~/foo/ ~/bar/
@JorgeFS
Creo que bash va a tomarse unas enormes vacaciones.
@Heimdall
Gracias bro, acabo de dar con eso, jeje.
Al parecer el fichero ~/.config/fish/config.fish es el equivalente de .bashrc
[SOLVED]:
Copia jquery.js para /usr/share/fish/tools/web_config/
@JorgeFS
De donde sacaste el fichero jquery.js ?
@Heimdall
Imagino que sea el JQuery estándar de toda la vida.
@Heimdall
si, como dice @Obi-Wan Kenobi, es jquery de toda la vida, lol.
sudo apt install fish
E: No se ha podido localizar el paquete fish
¬¬
Si no tienes fish en el repo (como yo en el debian) o tienes versionitis puedes r@y y yo lo mantenemos actualizado en https://codecomunidades.uci.cu/rayner/fish-shell/
Dicho sea de paso, la última versión tiene una función export para que los que vienen de bash no lo extrañen.
Bash??? ya ni me acuerdo de el, hace tiempo uso fish. Me descargue la ultima versión https://github.com/fish-shell/fish-shell y la compilé, porque entre otras cosas, permite el vi-mode, para las fans de vim like me ;). El fish_config en esta versión esta mucho más completa. Lo que mas me cuadra son los prompts de git que te brinda, te permiten ver en el propio prompt en que rama estas parado asi no tienes que estar haciendo un git branch a cada rato.
@Jorge Luis
Al igual que zsh, fish tambien tiene su oh-my-fish que está bastante bueno pero para ser sincero fish solo se defiende muy bien.
Alguna idea de cómo resolver este error?
Cloning into ‘fish-shell’…
fatal: unable to access ‘https://codecomunidades.uci.cu/rayner/fish-shell.git/’: SSL certificate problem: self signed certificate
git config –global http.sslVerify false
@Alexis López Zubieta
Gracias por la colaboración, me funcionó.
@Heimdall
Es mejor clonar por ssh, así no hace falta quitar el ssl.
@raven
Es que estoy mas familiarizado con HTTPS, en mi anterior trabajo utilizaba Bitbucket y GitHub y siempre use esa variante. 😀
Gracias ya está instalado, parece interesante jeje
@Heimdall
Es lo mismo, es transparente para ti, solo tienes que poner tu llave y de paso te ahorras el password para hacer push.
@raven
Debo dedicar un time a eso de crearme mi llave SSH y aprender a utilizar esa vía.
@Zwei
Cuando lo conozcas mejor te enamorarás de él, estoy preparando un post con algunas funciones desarrolladas por @raven que lo hacen mas atráctivo y funcional.
despues de descargar el .zip de codecomunidades como lo compilo??
buena esa
@yudel
probando nav
@qwe
Para utilizarlo no es necesario compilarlo, puede instalarlo desde los mismos repositorios:
sudo apt-get install fish
El zsh me parece mucho mas poderoso
@Heimdall
El de Comunidades está más actualizado y hay distros que no lo tienen en el repo 😉
@qwe
las instrucciones para compilar estan en el README.md