Como usuario de Linux, siempre he usado bash porque era el valor predeterminado en todas las distribuciones que usaba. Las personas que usan otros sistemas Unix como BSD parecen usar otros shells con mucha más frecuencia. En aras de aprender un poco más, he decidido probar zsh.
Como usuario de bash:
- ¿Qué características extrañaré?
- ¿Y cuáles debo tener en cuenta?
Respuesta aceptada:
Para obtener una respuesta más completa, lea https://apple.stackexchange.com/questions/361870/what-are-the-practical-differences- between-bash-and-zsh/361957#361957
Ya ha habido bastante actividad sobre el tema en otros sitios de Stack Exchange. Mi experiencia de cambiar de bash a zsh, por lo que puedo recordar (fue hace años²), es que no me perdí nada. Gané mucho; Estas son las características simples específicas de zsh que más utilizo:
-
La característica de zsh que más echo de menos cuando uso ocasionalmente bash es autocd:en zsh, ejecutar un directorio significa cambiar a él, siempre que active el
autocd
opción.⁴ -
Otra característica muy útil es el elegante englobamiento. Los
jeroglíficoslos caracteres son un poco difíciles de recordar pero extremadamente convenientes (ya que a menudo es más rápido buscarlos que escribir el equivalentefind
) dominio). Algunos de los ejemplos más simples:
foo*~*.bak
=todas las coincidencias parafoo*
excepto aquellos que coincidan con*.bak
foo*(.)
=solo archivos normales que coincidan confoo*
foo*(/)
=solo directorios que coincidan confoo*
foo*([email protected])
=solo enlaces simbólicos colgantes que coinciden confoo*
foo*(om[1,10])
=los 10 archivos más recientes que coinciden confoo*
foo*(Lm+1)
=solo archivos de tamaño> 1 MB
dir/**/foo*
=foo*
en el directoriodir
y todos sus subdirectorios, recursivamente⁴ -
Para cambios de nombre sofisticados,
zmv
incorporado puede ser útil. Por ejemplo, para copiar cadafile
afile.bak
:zmv -C '(*)(#q.)' '$1.bak'
-
Tanto bash como zsh tienen un sistema de finalización decente que debe activarse explícitamente (
. /etc/bash_completion
oautoload -U compinit; compinit
). Zsh's es mucho más configurable y, en general, más elegante.
Si ejecuta zsh sin un .zshrc
, inicia un menú interactivo que le permite elegir las opciones de configuración. (Algunas distribuciones pueden deshabilitar esto; en ese caso, ejecute autoload zsh-newuser-install; zsh-newuser-install
.) Recomiendo habilitar las opciones de historial recomendadas, activar la finalización ("nuevo estilo") y activar las "opciones comunes de shell" excepto beep
. Más tarde, configure más opciones a medida que las descubra.
²En ese momento, la finalización programable era la función principal de zsh, pero bash la adquirió poco después.
⁴Las funciones que bash adquirió solo en la versión 4 (por lo que no estaban ampliamente disponibles en el momento en que se publicó esta respuesta y no están disponibles en bash proporcionado por el sistema en macOS) están en letra más pequeña.