GNU/Linux >> Tutoriales Linux >  >> Linux

5 consejos para mejorar la productividad con zsh

El shell Z conocido como zsh es un shell para sistemas operativos similares a Linux/Unix. Tiene similitudes con otras conchas en el sh (Bourne shell), como bash y ksh , pero ofrece muchas funciones avanzadas y potentes opciones de edición de la línea de comandos, como la función de finalización de pestañas mejorada.

Sería imposible cubrir todas las opciones de zsh aquí; hay literalmente cientos de páginas que documentan sus muchas funciones. En este artículo, presentaré cinco consejos para que sea más productivo usando la línea de comandos con zsh.

1. Temas y complementos

A lo largo de los años, la comunidad de código abierto ha desarrollado innumerables temas y complementos para zsh. Un tema es una configuración de solicitud predefinida, mientras que un complemento es un conjunto de alias y funciones útiles que facilitan el uso de un comando específico o lenguaje de programación.

La forma más rápida de comenzar a usar temas y complementos es usar un marco de configuración zsh. Hay muchos disponibles, pero el más popular es Oh My Zsh. De forma predeterminada, habilita algunas opciones de configuración sensatas de zsh y viene cargado con cientos de temas y complementos.

Un tema lo hace más productivo ya que agrega información útil a su indicador, como el estado de su repositorio Git o Python virtualenv en uso. Tener esta información de un vistazo le evita tener que escribir los comandos equivalentes para obtenerla, y es un aspecto genial. Aquí hay un ejemplo de Powerlevel9k, mi tema de elección:

Además de los temas, Oh My Zsh incluye toneladas de complementos útiles para zsh. Por ejemplo, habilitar el complemento Git le brinda acceso a una serie de alias útiles, como:

$ alias | grep -i git | sort -R | head -10
g=git
ga='git add'
gapa='git add --patch'
gap='git apply'
gdt='git diff-tree --no-commit-id --name-only -r'
gau='git add --update'
gstp='git stash pop'
gbda='git branch --no-color --merged | command grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | command xargs -n 1 git branch -d'
gcs='git commit -S'
glg='git log --stat'

Hay complementos disponibles para muchos lenguajes de programación, sistemas de empaquetado y otras herramientas que usa comúnmente en la línea de comandos. Aquí hay una lista de complementos que uso en mi estación de trabajo Fedora:

git golang fedora docker oc sudo vi-mode virtualenvwrapper

2. Alias ​​inteligentes

Los alias son muy útiles en zsh. La definición de alias para los comandos más utilizados le ahorra mucho teclear. Oh My Zsh configura varios alias útiles de forma predeterminada, incluidos alias para navegar por directorios y reemplazos de comandos comunes con opciones adicionales como:

ls='ls --color=tty'
grep='grep  --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'

Además de los alias de comando, zsh habilita dos tipos de alias útiles adicionales:el sufijo alias y el alias global .

Un alias de sufijo le permite abrir el archivo que escribe en la línea de comando utilizando el programa especificado en función de la extensión del archivo. Por ejemplo, para abrir archivos YAML usando vim, defina el siguiente alias:

alias -s {yml,yaml}=vim

Ahora, si escribe cualquier nombre de archivo que termine con yml o yaml en la línea de comando, zsh abre ese archivo usando vim:

$ playbook.yml
# Opens file playbook.yml using vim

Un alias global le permite crear un alias que se expande en cualquier parte de la línea de comando, no solo al principio. Esto es muy útil para reemplazar nombres de archivo comunes o comandos canalizados. Por ejemplo:

alias -g G='| grep -i'

Para usar este alias, escriba G en cualquier lugar donde escribiría el comando canalizado:

$ ls -l G do
drwxr-xr-x.  5 rgerardi rgerardi 4096 Aug  7 14:08 Documents
drwxr-xr-x.  6 rgerardi rgerardi 4096 Aug 24 14:51 Downloads

A continuación, veamos cómo ayuda zsh a navegar por el sistema de archivos.

3. Fácil navegación por directorios

Cuando usa la línea de comando, navegar a través de diferentes directorios es una de las tareas más comunes. Zsh facilita esto al proporcionar algunas características útiles de navegación de directorios. Estas funciones están habilitadas con Oh My Zsh, pero puede habilitarlas usando este comando:

setopt  autocd autopushd \ pushdignoredups

Con estas opciones configuradas, no necesita escribir cd para cambiar de directorio. Simplemente escriba el nombre del directorio y zsh cambia a él:

$ pwd
/home/rgerardi
$ /tmp
$ pwd
/tmp

Para retroceder, escriba - :

Zsh mantiene el historial de los directorios que visitó para que pueda cambiar rápidamente a cualquiera de ellos. Para ver la lista, escriba dirs -v :

$ dirs -v
0       ~
1       /var/log
2       /var/opt
3       /usr/bin
4       /usr/local
5       /usr/lib
6       /tmp
7       ~/Projects/Opensource.com/zsh-5tips
8       ~/Projects
9       ~/Projects/ansible
10      ~/Documents

Cambie a cualquier directorio de esta lista escribiendo ~# donde # es el número del directorio en la lista. Por ejemplo:

$ pwd
/home/rgerardi
$ ~4
$ pwd
/usr/local

Combínalos con alias para que sea aún más fácil navegar:

d='dirs -v | head -10'
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'

Ahora puedes escribir d para ver los primeros diez elementos de la lista y el número para cambiar a ellos:

$ d
0       /usr/local
1       ~
2       /var/log
3       /var/opt
4       /usr/bin
5       /usr/lib
6       /tmp
7       ~/Projects/Opensource.com/zsh-5tips
8       ~/Projects
9       ~/Projects/ansible
$ pwd
/usr/local
$ 6
/tmp
$ pwd
/tmp

Finalmente, zsh expande automáticamente los nombres de los directorios con la finalización de Tabulador. Escriba las primeras letras de los nombres de los directorios y TAB para usarlo:

$ pwd
/home/rgerardi
$ p/o/z (TAB)
$ Projects/Opensource.com/zsh-5tips/

Esta es solo una de las características habilitadas por el poderoso sistema de finalización de pestañas de zsh. Veamos un poco más.

4. Finalización de pestaña avanzada

El poderoso sistema de finalización de Zsh es uno de sus sellos distintivos. Para simplificar, lo llamo finalización de tabulación, pero debajo del capó, está sucediendo más de una cosa. Por lo general, hay expansión y finalización de comandos. Los discutiré juntos aquí. Para obtener más información, consulte esta Guía del usuario.

La finalización de comandos está habilitada de forma predeterminada con Oh My Zsh. Para habilitarlo, agregue las siguientes líneas a su .zshrc archivo:

autoload -U compinit
compinit

El sistema de finalización de Zsh es inteligente. Intenta sugerir solo elementos que se pueden usar en ciertos contextos, por ejemplo, si escribe cd y TAB , zsh sugiere solo nombres de directorios, ya que conoce cd no funciona con nada más.

Por el contrario, sugiere nombres de usuario cuando ejecuta comandos relacionados con el usuario o nombres de host cuando usa ssh o ping , por ejemplo.

Tiene una amplia biblioteca de finalización y comprende muchos comandos diferentes. Por ejemplo, si está utilizando el tar comando, puede presionar Tab para ver una lista de archivos disponibles en el paquete como candidatos para la extracción:

$ tar -xzvf test1.tar.gz test1/file1 (TAB)
file1 file2

Aquí hay un ejemplo más avanzado, usando git . En este ejemplo, al escribir TAB , zsh completa automáticamente el nombre del único archivo en el repositorio que se puede preparar:

$ ls
original  plan.txt  zsh-5tips.md  zsh_theme_small.png
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   zsh-5tips.md

no changes added to commit (use "git add" and/or "git commit -a")
$ git add (TAB)
$ git add zsh-5tips.md

También comprende las opciones de la línea de comandos y sugiere solo las que son relevantes para el subcomando seleccionado:

$ git commit - (TAB)
--all                  -a       -- stage all modified and deleted paths
--allow-empty                   -- allow recording an empty commit
--allow-empty-message           -- allow recording a commit with an empty message
--amend                         -- amend the tip of the current branch
--author                        -- override the author name used in the commit
--branch                        -- show branch information
--cleanup                       -- specify how the commit message should be cleaned up
--date                          -- override the author date used in the commit
--dry-run                       -- only show the list of paths that are to be committed or not, and any untracked
--edit                 -e       -- edit the commit message before committing
--file                 -F       -- read commit message from given file
--gpg-sign             -S       -- GPG-sign the commit
--include              -i       -- update the given files and commit the whole index
--interactive                   -- interactively update paths in the index file
--message              -m       -- use the given message as the commit message
... TRUNCATED ...

Después de escribir TAB , puede usar las teclas de flecha para navegar por la lista de opciones y seleccionar la que necesita. Ahora no necesita memorizar todas esas opciones de Git.

Hay muchas opciones disponibles. La mejor manera de encontrar lo que es más útil para usted es usándolo.

5. Historial y edición de línea de comandos

Las capacidades de edición de la línea de comandos de Zsh también son útiles. Por defecto, emula emacs. Si, como yo, prefiere vi/vim, habilite los enlaces vi con el siguiente comando:

$ bindkey -v

Si estás usando Oh My Zsh, el vi-mode El complemento habilita enlaces adicionales y un indicador de modo en su indicador, muy útil.

Después de habilitar los enlaces vi, puede editar la línea de comando usando los comandos vi. Por ejemplo, presione ESC+/ para buscar en el historial de la línea de comandos. Mientras busca, presione n trae la siguiente línea coincidente y N El anterior. Los comandos vi más comunes funcionan después de presionar ESC como 0 para saltar al principio de la línea, $ para saltar al final, i para insertar, a para agregar, etc. Incluso los comandos seguidos de movimiento, como cw para cambiar una palabra.

Además de la edición de la línea de comandos, zsh proporciona varias características útiles del historial de la línea de comandos si desea corregir o volver a ejecutar los comandos utilizados anteriormente. Por ejemplo, si cometió un error al escribir fc trae el último comando en su editor favorito para arreglarlo. Respeta el $EDITOR variable y por defecto usa vi.

Otro comando útil es r , que vuelve a ejecutar el último comando; y r <WORD> , que ejecuta el último comando que contiene la cadena WORD .

Finalmente, escribiendo doble flequillo (!! ) trae de vuelta el último comando en cualquier lugar de la línea. Esto es útil, por ejemplo, si olvidó escribir sudo para ejecutar comandos que requieren privilegios elevados:

$ less /var/log/dnf.log
/var/log/dnf.log: Permission denied
$ sudo !!
$ sudo less /var/log/dnf.log

Estas características facilitan la búsqueda y reutilización de comandos escritos previamente.

¿Adónde ir desde aquí?

Estas son solo algunas de las funciones de zsh que pueden aumentar su productividad; hay muchos más. Para obtener información adicional, consulte los siguientes recursos:

Introducción a Z Shell

Guía del usuario de ZSH

Wiki de Archlinux

amantes de zsh

¿Tiene algún consejo de productividad de zsh para compartir? Me encantaría saber sobre ellos en los comentarios a continuación.


Linux
  1. Mejore su productividad con este ligero escritorio Linux

  2. Comenzando con Zsh

  3. Comando Nohup con ejemplos

  4. 10 increíbles consejos y trucos para trabajar con Linux

  5. Comando JQ en Linux con ejemplos

Comando AWK en Linux con ejemplos

Comando Curl en Linux con ejemplos

Comando ip de Linux con ejemplos

Comando Netcat (nc) con ejemplos

15 comandos ps de Linux con ejemplos

Comando de historial con ejemplos