75 Comandos, Plugins, Aliases y Herramientas de Zsh
Paso gran parte de mi día en el terminal, y mi shell de elección es Zsh – un shell Unix altamente personalizable que contiene algunas características muy potentes. Como soy un desarrollador perezosoTM, siempre estoy buscando maneras de escribir menos y automatizar todas las cosas. Por suerte esto es algo a lo que Zsh se presta muy bien.
En este post, voy a compartir con vosotros 75 comandos, plugins, alias y herramientas que espero que os ahorren algunas pulsaciones y os hagan más productivos en vuestro trabajo diario.
Si no tienes Zsh instalado en tu máquina, entonces echa un vistazo a este post, donde te muestro cómo ponerlo en marcha.
15 cosas que Zsh puede hacer fuera de la caja
Zsh comparte un montón de características útiles con Bash. Ninguno de los siguientes son exclusivos de Zsh, pero son buenos para saber de todos modos. Te animo a que empieces a utilizar la línea de comandos para realizar operaciones como las que se enumeran a continuación. Puede parecer más trabajo que el uso de una interfaz gráfica de usuario al principio, pero una vez que usted consigue la caída de las cosas, usted nunca mirar hacia atrás.
- Entre
cd
desde cualquier lugar en el sistema de archivos le llevará directamente a su directorio de inicio. - Entre
!!
traerá el último comando. Esto es útil si un comando falla porque necesita derechos de administrador. En este caso puedes escribirsudo !!
. - Puedes usar
&&
para encadenar varios comandos. Por ejemplo,mkdir project && cd project && npm init -y
. - La ejecución condicional es posible utilizando
||
. Por ejemplo,git commit -m "whatever..." || echo "Commit failed"
. - El uso de un conmutador
-p
con el comandomkdir
le permitirá crear directorios padre según sea necesario. El uso de la expansión de llaves reduce la repetición. Por ejemplo,mkdir -p articles/jim/sitepoint/article{1,2,3}
. - Configure las variables de entorno por comando de la siguiente manera:
NODE_DEBUG=myapp node index.js
. O, en una base por sesión así:export NODE_DEBUG=myapp
. Puede comprobar que se ha establecido escribiendoecho $<variable-name>
. - Pasa la salida de un comando a un segundo comando. Por ejemplo,
cat /var/log/kern.log | less
para hacer legible un registro largo, ohistory | grep ssh
para buscar cualquier entrada del historial que contenga «ssh». - Puede abrir archivos en su editor desde la terminal. Por ejemplo,
nano ~/.zshrc
(nano),subl ~/.zshrc
(Sublime Text),code ~/.zshrc
(VS Code). Si el archivo no existe, se creará cuando pulse Guardar en el editor. - La navegación es una habilidad importante que hay que dominar. No confíe sólo en sus teclas de flecha. Por ejemplo, Ctrl + a te llevará al principio de una línea.
- Mientras que Ctrl + e te llevará al final.
- Puedes usar Ctrl + w para borrar una palabra (hacia atrás).
- Ctrl + u eliminará todo desde el cursor hasta el principio de la línea.
- Ctrl + k borrará todo desde el cursor hasta el final de la línea. Estas tres últimas pueden deshacerse con Ctrl + y.
- Puede copiar texto con Ctrl + Mayúsculas + c. Esto es mucho más elegante que hacer clic con el botón derecho y seleccionar Copiar.
- A la inversa, puede pegar el texto copiado con Ctrl + Mayúsculas + v.
Intente memorizar esas combinaciones de teclas. Se sorprenderá de la frecuencia con la que resultan útiles.
15 alias personalizados para aumentar su productividad
Los alias son atajos de terminal para comandos regulares. Puedes añadirlos a tu archivo ~/.zshrc
y luego recargar tu terminal (usando source ~/.zshrc
) para que surtan efecto.
La sintaxis para declarar un alias (simple) es la siguiente:
alias =''
Los alias son ideales para los comandos que se usan con frecuencia, los comandos largos o los comandos con una sintaxis difícil de recordar. Estos son algunos de los que uso regularmente:
- Un alias
myip
, que imprime tu dirección IP pública actual en el terminal:alias myip='curl http://ipecho.net/plain; echo'
. - Un alias
distro
que imprime información sobre tu distribución de Linux:alias distro='cat /etc/*-release'
. - A
reload
alias, ya que parece que nunca puedo recordar cómo recargar mi terminal:alias reload='source ~/.zshrc'
. - Un alias
undo-git-reset
:alias undo-git-reset-head="git reset 'HEAD@{1}'"
. Esto revierte los efectos de ejecutargit reset HEAD~
. - Un alias para actualizar las listas de paquetes:
alias sapu='sudo apt-get update'
. - Un alias para volver a ejecutar el comando anterior con
sudo
:alias ffs='sudo !!'
. - Porque me da pereza, he puesto el alias
y
al comandoyarn
:alias y='yarn'
. Esto significa que puedo clonar un repo, y luego simplemente escribir y para tirar de todas las dependencias. Aprendí este de Scott Tolinski en Syntax. - No es uno de los que uso, pero este alias vuela la carpeta
node_modules
y elimina el archivopackage-lock.json
, antes de reinstalar las dependencias de un proyecto:alias yolo='rm -rf node_modules/ && rm package-lock.json && yarn install'
. Como probablemente sabes, yolo significa You Only Live Once. - Un alias para abrir mi archivo
.zshrc
para editarlo:alias zshconfig='subl $HOME/.zshrc'
. - Un alias para actualizar la lista de versiones de Ruby que rbenv puede instalar:
alias update-available-rubies='cd ~/.rbenv/plugins/ruby-build && git pull'
- Un alias para poner en marcha un servidor en su directorio actual (sin necesidad de paquetes npm):
alias server='python -m SimpleHTTPServer 8000'
. - También puedes crear un alias para abrir la documentación en tu navegador:
alias npmhelp='firefox https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/npm'
. - Un alias global para canalizar la salida de un comando a
less
:alias -g L='| less'
. Puedes usarlo así:cat production.log L
. - Un alias global para canalizar la salida de un comando a
grep
:alias -g G='| grep'
. Puedes usarlo así:history G ssh
. - También puedes usar funciones para crear alias. Lo siguiente (tomado de aquí) crea un alias que añade, confirma y empuja el código a GitHub:
bash
function acp() {
git add .
git commit -m ""
git push
}
Hay un montón de lugares para encontrar más ideas para los alias en línea. Por ejemplo, esta discusión de Hacker News, o este post sobre la productividad de la línea de comandos con Zsh.
15 Cosas geniales que puedes hacer con (Oh My) Zsh
Oh My Zsh es un marco impulsado por la comunidad para la gestión de su configuración de Zsh y viene con miles de funciones útiles, ayudantes, plugins y temas. Si usted va a hacer el shell Z su conductor diario, usted realmente debe instalar Oh My Zsh.
Aquí hay quince cosas útiles que Oh My Zsh puede hacer por usted:
- El comando
take
creará un nuevo directorio y cambiar en él.take my-project
reemplaza amkdir my-project && cd my-project
. -
zsh_stats
Le dará una lista de los 20 principales comandos y cuántas veces se han ejecutado. - Oh My Zsh simplifica la navegación de su sistema de archivos. Por ejemplo,
..
es un alias paracd ..
. - De la misma manera,
...
te mueve hacia arriba dos directorios,....
te mueve hacia arriba tres, y.....
te mueve hacia arriba cuatro. - Puedes omitir el
cd
al navegar. Escribiendo/
, por ejemplo, le llevará directamente a la raíz de su sistema de archivos. - También se admite la coincidencia parcial. Por ejemplo, escribiendo
/h/j/De
y presionando TAB, luego Return, me lleva a/home/jim/Desktop/
. -
rd
es un alias pararmdir
ymd
es un alias paramkdir -p
. - Puede escribir
d
para listar los últimos directorios utilizados desde una sesión de terminal. - Entonces puede navegar a cualquiera de ellos utilizando
cd -n
, donden
es el número de directorio. - La finalización de tabulación es otra gran característica. Por ejemplo, si escribe
ls -
y pulsa TAB, aparecerán todas las opciones del comando, junto con una útil descripción de lo que hacen. Esto también funciona paracap
,rake
,ssh
, ykill
. - Escribir
alias
lista todos sus alias actuales. - Con globbing (una característica de Zsh), puede listar archivos con una extensión particular. Por ejemplo,
ls *.html
listará todos los archivos HTML en el directorio actual. Para incluir los subdirectorios, cambie a:ls **/*.html
. - Los calificadores globales le permiten seleccionar tipos de archivos utilizando banderas. Por ejemplo,
ls -l **/*(.x)
encontrará todos los archivos ejecutables en el directorio actual y todos los subdirectorios. - Puede buscar archivos por fecha de modificación. Por ejemplo,
ls *(m-7)
listará todos los archivos modificados en la última semana. - Puede buscar archivos por tamaño. Por ejemplo,
ls *(Lm+1)
encontrará todos los archivos con un tamaño superior a 1MB.
Using Plugins for Fun and Profit
Oh My Zsh viene con un montón de plugins. Usted debe mirar a través de estos e invertir algún tiempo en el aprendizaje de los que ayudarán a su flujo de trabajo.
Aquí hay tres plugins que utilizo regularmente, que proporcionan una tonelada de atajos y aliases.
10 Nifty Git Aliases
El plugin git proporciona muchos aliases y varias funciones útiles. Por qué no repasarlas e intentar memorizar las diez principales? Aquí están los que uso más a menudo.
-
g
es un práctico alias paragit
. Esto significa que puedes escribir cosas comog clone <whatever>
en lugar degit clone <whatever>
. Puede que sólo sean dos pulsaciones, pero pronto se acumulan. -
gaa
es un alias paragit add all
. Yo uso éste todo el tiempo. -
gb
es un alias paragit branch
, que listará todas las ramas del repo actual y te mostrará en cuál estás. -
gcb
es un alias paragit checkout -b
, el comando que te permite crear una nueva rama. -
gcm
es un alias paragit checkout master
. Esto le devuelve a la rama maestra. -
gdca
es un alias paragit diff --cached
. Esto le permite diff cualquier archivo que ha puesto en escena para confirmar. -
gf
es un alias paragit fetch
. -
gm
es un alias paragit merge
. -
gp
es un alias paragit push
. Para sincronizar un fork de un repo, podrías hacer:gf upstream
,gm upstream/master
, seguido degp
. -
glog
es un alias paragit log --oneline --decorate --graph
, lo que te dará un bonito gráfico de ramas git.
10 Handy npm Aliases
El plugin npm proporciona la finalización también un montón de alias útiles.
-
npmg
es un alias paranpm install --global
, que puede utilizar para instalar dependencias globalmente en su sistema. Por ejemplo,npmg nodemon
. -
npmS
es un alias paranpm install --save
, que se utiliza para instalar dependencias y añadirlas a la seccióndependencies
de supackage.json
. Tenga en cuenta que, a partir de npm 5.0.0, este es el valor predeterminado cuando se ejecutanpm i <package>
. -
npmD
es un alias paranpm install --save-dev
, que se utiliza para instalar dependencias y añadirlas a la seccióndevDependencies
de supackage.json
. -
npmO
es un alias paranpm outdated
, que comprobará el registro para ver si algún (o, específicos) paquetes instalados están actualmente obsoletos. -
npmL
es un alias paranpm list
, que listará los paquetes instalados. -
npmL0
es un alias paranpm list --depth=0
, que lista los paquetes de nivel superior. Esto es especialmente útil para ver qué módulos están instalados globalmente sin inundar su terminal con un enorme árbol de dependencias:npmL0 -g
. -
npmst
es un alias paranpm run start
, un script npm que se utiliza a menudo para iniciar una aplicación. -
npmt
es un alias paranpm run test
, que, como se puede adivinar, se utiliza para ejecutar sus pruebas. -
npmR
es un alias paranpm run
. Por sí solo, este comando listará todos los scripts npm disponibles de un proyecto, junto con una descripción de lo que hacen. Usado junto con un nombre de script, ejecutará ese script, Por ejemplo,npmR build
. -
npmI
es un alias denpm init
. Esto le hará un montón de preguntas, y luego creará unpackage.json
basado en sus respuestas. Utilice la bandera-y
para automatizar el proceso. Por ejemplo,npmI -y
.
10 Alias de Rails/Rake que ahorran tiempo
Este plugin añade finalización para el framework Ruby on Rails y el programa Rake, así como algunos alias para registros y variables de entorno.
-
rc
es un alias pararails console
, que permite interactuar con tu aplicación Rails desde la CLI. -
rdc
es un alias pararake db:create
, que (a menos queRAILS_ENV
esté configurado) crea las bases de datos de desarrollo y de pruebas para tu aplicación. -
rdd
es un alias pararake db:drop
, que deja caer las bases de datos de desarrollo y de prueba de su aplicación. -
rdm
es un alias pararake db:migrate
, que ejecutará cualquier migración de base de datos pendiente. -
rds
es un alias pararake db:seed
, que ejecuta el archivodb/seeds.rb
para poblar su base de datos de desarrollo con datos. -
rgen
es un alias pararails generate
, que generará código boilerplate. Por ejemplo:rgen scaffold item name:string description:text
. -
rgm
es un alias pararails generate migration
, que generará una migración de base de datos. Por ejemplo:rgm add_description_to_products description:string
. -
rr
es un alias pararake routes
, que lista todas las rutas definidas de una app. -
rrg
es un alias pararake routes | grep
, que permitirá listar y filtrar las rutas definidas. Por ejemplo,rrg user
. -
rs
es un alias pararails server
, que lanza el servidor web por defecto de Rails.
Recursos Adicionales
La principal función de los plugins listados arriba es proporcionar alias a comandos de uso frecuente. Por favor, tenga en cuenta que hay muchos más plugins que aumentan su shell con funcionalidad adicional.
Aquí hay cuatro de mis favoritos:
- sudo le permite prefijar fácilmente sus comandos actuales o anteriores con
sudo
presionando ESC dos veces. - autosugerencias sugiere comandos a medida que escribe basado en la historia y las terminaciones. Si la sugerencia es la que buscas, pulsa la tecla → para aceptarla. Un verdadero ahorro de tiempo!
- command-not-found: si un comando no es reconocido en el
$PATH
, esto utilizará el paquete command-not-found de Ubuntu para encontrarlo o sugerir errores ortográficos. - z es un práctico plugin que construye una lista de tus carpetas más frecuentes y recientes (las llama «frecent») y te permite saltar a ellas con un solo comando.
Y no olvides que si pasas mucho tiempo en la terminal, vale la pena invertir algo de esfuerzo en hacerla visualmente atractiva. Por suerte, Oh My Zsh viene con un montón de temas para que elijas. Mi elección del grupo es Agnoster.
Puedes encontrar más información sobre los temas en mi artículo 10 Zsh Tips & Trucos: Configuración, personalización &Uso.
Conclusión
Así que ahí lo tenemos: 75 comandos, plugins, alias y herramientas de Zsh. Espero que hayas aprendido un truco o dos en el camino, y te animo a salir de tus GUIs y entrar en la terminal. Es más fácil de lo que parece y una gran manera de aumentar tu productividad.
Si me he perdido tu plugin favorito, o un alias/comando que te ahorra tiempo, házmelo saber en Twitter.
¿Quieres sacar aún más partido a tu caja de herramientas? Echa un vistazo a Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers de Wiley.