¡Oh-My-Zsh! Una obra de magia CLI – Tutorial para Ubuntu

Michiel Mulders
Michiel Mulders

Follow

29 ago, 2017 – 6 min read

Oh-My-Zsh Agnoster Theme

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, y zlogout
  • 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.

  • 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

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.

  1. Instalar paquetes de requisitos previos
    $ sudo apt install git-core zsh
  2. 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)”
  3. Instala la fuente Powerline para aderezar tu CLI con iconos
    $ sudo apt install fonts-powerline
  4. Cambia el tema de ‘robbyrussell’ a ‘agnoster’ para el legendario tema Oh-My-Zsh
    $ nano ~/.zshrc
  5. Busca la variable ZSH_THEME y cámbiala:ZSH_THEME="agnoster"
  6. 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
  7. A continuación abrimos el archivo del tema para ‘agnoster’ en el editor
    $ nano agnoster.zsh-theme
  8. 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 variable PROMPT a $(build_prompt).

Configuración del tema Agnoster

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.

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

Página de manual coloreada del comando ls

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.

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.

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.

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 a grep para buscar un alias en particular.
  • / : cd /
  • ~ : cd ~
  • ... : cd ../..
  • .... : cd ../../..
  • ..... : cd ../../../.. Creo que lo has entendido, ¿no?
  • take test_folder : Crea una carpeta llamada test_folder y cambia a ella
  • x : Extrae el archivo de tipos tar, 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.