![Michiel Mulders](https://miro.medium.com/fit/c/96/96/1*S0WbiE9cXbClh7Oyz8hKYw.jpeg)
![](https://miro.medium.com/max/60/1*dcFI6nEXItPJcfPgdloonw.png?q=20)
Soy un gran fan de la interfaz de línea de comandos… ¡Odio usar el ratón de mi ordenador! Esto me motivó a buscar grandes herramientas para mejorar mi experiencia de usuario en la CLI. Me encontré con Oh-My-Zsh durante mis prácticas. Algunos amigos me convencieron de usar este shell por su simplicidad y ajustabilidad. Como un bono, el CLI es extensible con muchos plugins.
Esta es una lista de sus capacidades:
- Validación de comandos
- Corrección ortográfica
- Compartir el historial de comandos entre todos los shells en ejecución
- Preguntas temáticas (Agnoster, RobbyRussell, …)
- Historia de directorios
- Se pueden iniciar/apagar scripts a través de
zshenv
,zprofile
,zshrc
,zlogin
, yzlogout
- Fuertes capacidades de autocompletar. Puedes usar la tecla TAB para navegar por las diferentes opciones y usar enter para seleccionar la carpeta correcta. Bash, por ejemplo, imprimiría todas las opciones. Esto es bastante spam y contamina tu scrollback.
![](https://miro.medium.com/max/60/1*ZHWU23dv2bEY7Zt8WHKiKw.png?q=20)
- Agrega plugins: por ejemplo, el plugin Git con una enorme lista de útiles alias Git.
Este plugin muestra la rama activa y da información visual sobre su estado Git:
– Verde: rama si no se han producido cambios
– Amarillo con un icono de círculo: archivos sin seguimiento
– Amarillo con un icono de más: archivos listos para ser confirmados
![](https://miro.medium.com/max/60/1*t9mmQxxyglIoE4wSHCSxVQ.png?q=20)
Estoy realizando esta guía de instalación en mi máquina virtual Ubuntu 16.04. Para mostrar el poder subyacente de Oh-My-Zsh, instalaré el plugin Git (Git-core). Este plugin proporciona información visual sobre el estado de Git de un proyecto.
- Instalar paquetes de requisitos previos
$ sudo apt install git-core zsh - Instalar Oh-My-Zsh desde el repositorio de Robby Russell
$ sh -c “$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)” - Instala la fuente Powerline para aderezar tu CLI con iconos
$ sudo apt install fonts-powerline - Cambia el tema de ‘robbyrussell’ a ‘agnoster’ para el legendario tema Oh-My-Zsh
$ nano ~/.zshrc - Busca la variable
ZSH_THEME
y cámbiala:ZSH_THEME="agnoster"
- No me gusta que el tema muestre mi nombre de usuario y mi host. Para deshacernos de esto, cambiamos el directorio a
$ cd ~/.oh-my-zsh/themes - A continuación abrimos el archivo del tema para ‘agnoster’ en el editor
$ nano agnoster.zsh-theme - Ahora podemos cambiar el ‘Main prompt’. No necesitamos prompt_context en la función
build_prompt()
. Simplemente comenta esta línea o elimínala. Por último, cambie la variablePROMPT
a$(build_prompt)
.
![](https://miro.medium.com/max/60/1*PSSWi8pSugTqtELLINcJUg.png?q=20)
Para ver realmente el tema, tiene que originar su archivo .zshrc
así: source ~/.zshrc
. Si todo ha funcionado bien, deberías ver algo como la imagen de portada
Extra: Establecer zsh como nuestro shell por defecto. Ejecuta esto en tu shell por defecto, en la mayoría de los casos este será bash. Si ejecuta este comando en zsh, no cambiará nada:
$ chsh -s $(que zsh)
Nota: Si usa sudo
cambiará el shell para root, pero no para su usuario de trabajo. Además de eso, asegúrese de cerrar la sesión y volver a iniciarla para ver los cambios.
Instalar plugins
Todos los plugins listados en la página Github de plugins están preinstalados con Oh-My-Zsh en ~/.oh-my-zsh/plugins
. Los plugins personalizados se pueden instalar en ~/.oh-my-zsh/custom/plugins
. Para utilizar un plugin, sólo tiene que añadirlo a la lista de plugins en su archivo ~/.zshrc
. Añada con prudencia, ya que demasiados plugins ralentizan el inicio del shell. Deje un espacio en blanco entre cada plugin.
![](https://miro.medium.com/max/60/1*-k4SLF-lDxkWSMizohWUbQ.png?q=20)
Colored-man-pages
En este ejemplo, he instalado un plugin útil para dar color a su man pages
. Para poder usar el plugin, haz el source de tu archivo .zshrc
:
$ source ~/.zshrc
![](https://miro.medium.com/max/60/1*BJrseBNoTJMF7P6hR5VFjg.png?q=20)
Zsh-syntax-highlighting
Otro gran plugin es el resaltado de sintaxis para tu shell. Además de eso, este plugin tiene la capacidad de verificar la corrección de su comando.
![](https://miro.medium.com/max/60/1*Qu0jEfPSL_rJIwIAAI6gzQ.png?q=20)
Este plugin no está instalado con Oh-My-Zsh. Navegue a ~/.oh-my-zsh/custom/plugins
y clone el código de Github en esta carpeta:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting
Verá una carpeta llamada zsh-syntax-highlighting
. Este es el nombre que hay que añadir a la lista de plugins.
Zsh-autosuggestions
También puedes usar zsh-autosuggestions
para completar comandos. Sugiere comandos basados en tu historial de comandos. Muy útil. Para seleccionar el comando propuesto, pulse la tecla de flecha derecha.
![](https://miro.medium.com/max/60/1*NRVDI-91yPi5eC6o0lUE8A.png?q=20)
La instalación es la misma que con zsh-syntax-highlighting
:
$ git clone https://github.com/zsh-users/zsh-autosuggestions
Y añade zsh-autosuggestions
a la lista de plugins.
Se encarga de los entusiastas de los alias
Oh-My-Zsh recuerda automáticamente los 20 últimos directorios que has visitado. Puedes listar el historial cronológicamente con dirs -v
o simplemente d
.
![](https://miro.medium.com/max/60/1*JbjgLytKQjXHldFe_ndR_A.png?q=20)
Normalmente, puedes usar cd +1
para ir al directorio anterior y así sucesivamente. Oh-My-Zsh hizo esto aún más sencillo, ahora puedes usar sólo el número de la entrada en el historial del directorio que quieres visitar… 1
.
Otros Alias Interesantes
-
alias
: Lista todos los alias. Puede canalizar la salida agrep
para buscar un alias en particular. -
/
:cd /
-
~
:cd ~
-
...
:cd ../..
-
....
:cd ../../..
-
.....
:cd ../../../..
Creo que lo has entendido, ¿no? -
take test_folder
: Crea una carpeta llamadatest_folder
y cambia a ella -
x
: Extrae el archivo de tipostar, bz2, rar, gz, tbz2, tgz, zip, Z, 7z
-
upgrade_oh_my_zsh
: Comando fácil para actualizar tu instalación
Problemas bien conocidos & Soluciones
Puede ocurrir que el archivo del historial se corrompa. No me preguntes los detalles específicos. Cada vez que inicias una nueva terminal, te aparece este mensaje:
zsh: corrupt history file /home/myusername/.zsh_history
Arreglémoslo con los siguientes comandos. Asegúrate de que estás en la raíz de la carpeta de inicio. El comando fc lista, edita o reejecuta los comandos previamente introducidos en un shell. El comando history le permite usar palabras de líneas de comando anteriores en la línea de comando que está escribiendo.
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
Conclusión
¡Oh-My-Zsh es simplemente impresionante!
Enlaces y fuentes útiles
Este artículo fue hecho con la ayuda de TheLedger.
- Oh-My-Zsh: http://ohmyz.sh/
- Plugins: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
- Themes: https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
- Principio Git con todos los alias: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
- Personalizar el prompt del shell: http://www.nparikh.org/unix/prompt.php#zsh
- ArchWiki sobre Zsh: https://wiki.archlinux.org/index.php/zsh#Autostart_X_at_login
- Complemento de resaltado de sintaxis de Zsh: https://github.com/zsh-users/zsh-syntax-highlighting
- Complemento de autosugestión de Zsh: https://github.com/zsh-users/zsh-autosuggestions
- RobbyRussell Wiki sobre la personalización de Zsh: https://github.com/robbyrussell/oh-my-zsh/wiki/Customization