He sido usuario de zsh durante bastante tiempo (antes de ese tcsh y antes de ese csh). Estoy bastante contento con eso, pero me preguntaba si hay características convincentes de bash que no existan en zsh. Y a la inversa, ¿hay características zsh que no existen en bash? Mi sensación actual es que bash es mejor:
- Si ya está familiarizado con él y no desea aprender una nueva sintaxis.
- Va a existir en la mayoría de las máquinas * nix de forma predeterminada, mientras que zsh puede ser una instalación adicional.
No estoy tratando de comenzar una batalla religiosa aquí, por eso solo estoy buscando características que existen en solo uno de los proyectiles.
Respuestas:
zsh es para vulcanos. ;-)
En serio: bash 4.0 tiene algunas características que anteriormente solo se encontraban en zsh, como ** globbing:
es equivalente a:
pero obviamente más poderoso.
En mi experiencia, la finalización programable de bash funciona un poco mejor que la de zsh, al menos en algunos casos (completando paquetes de Debian por aptitud, por ejemplo).
bash tiene
Alt + .
que insertar!$
zsh has expansion of all variables, so you can use e.g.
for this. zsh can also expand a command in backtics, so
yields
I find it very useful to expand
rm *
, as you can see what would be removed and can maybe remove one or two files from the commmand to prevent them from being deleted.Also nice: using the output from commands for other commands that do not read from stdin but expect a filename:
From what I read bash-completion also supports completing remote filenames over ssh if you use ssh-agent, which used to be a good reason to switch to zsh.
Aliases in zsh can be defined to work on the whole line instead of just at the beginning:
fuente
C-M-e
a "ampliar la cáscara-line", que se expandiríacat `echo blubb | sed 's/u/a/'`
acat blabb
yecho $SHELL
queecho /bin/bash
en mi caso. Además,C-x *
a "glob-expand-word", que se expandiríarm *
.Me gustaría señalar que bash no está instalado de forma predeterminada en FreeBSD, OpenBSD o NetBSD, y tampoco está instalado de forma predeterminada en Solaris 10 (OpenSolaris lo tiene por defecto), la última vez que usé un AIX, o Los servidores HP-UX tampoco se instalaron de manera predeterminada.
Además, en OpenSolaris / bin / sh NO es bash. Es ksh. Los mayores problemas que tengo como portero de software son las personas que asumen que / bin / sh es bash y que aceptará la sintaxis extendida de bash. Si bien este parece ser el caso en la mayoría de las distribuciones de Linux, no es el caso en otros lugares y es realmente molesto.
fuente
Aunque soy un usuario bash, encuentro una de las características de zsh bastante genial: RPS1.
Recuerda:
Muestra:
Cuando se usa algo como
Obtiene su mensaje a la izquierda y el directorio actual empujado a la derecha. ¡Incluso desaparece cuando la línea actual se está alargando demasiado! Es porque zsh es lo suficientemente inteligente como para dar baja prioridad a RPS1.
Puede ver una captura de pantalla de este ejemplo en http://imgur.com/OAZhC .
fuente
Zsh tiene corrección ortográfica. Si tiene una carta (o más) de descuento, descubrirá lo que quiso decir.
También tiene una finalización de pestañas más robusta, que me gusta.
Zsh tiene una utilidad de configuración interactiva para configurarlo como desee.
Algunas pruebas de velocidad dicen que zsh es más rápido, pero no he notado ninguna diferencia.
fuente
zsh
incluso tiene una configuración para permitir los tipos de letra 'una letra apagada' para el uso del teclado Dvorak.No conozco ninguna función bash que zsh no admita. El objetivo de diseño de zsh parece incluir el soporte de cualquier característica que bash agregue.
Todavía uso bash en lugar de zsh. Raramente encuentro características atractivas que zsh admite que bash no. Los problemas ocasionales con zsh a lo largo de los años, o que no existen en ciertos sistemas, han hecho que no valga la pena hacer la transición.
Finalmente puedo usar el mismo shell en todos los sistemas Unix, no vale la pena romper esto para las funciones que nunca usaré.
Las características presentes en zsh que no están presentes en bash parecen ser en su mayoría lindas, pero no las que serían importantes en el día a día.
fuente
bash tiene muchas características que solían estar solo en zsh. Ahora puede tener 'finalización inteligente de pestañas' con bash, como descubrió cualquier usuario reciente de ubuntu.
fuente
La sustitución de procesos y el globbing extendido son las dos características que más extrañaría. La configuración del indicador también es bastante buena: ver el nivel de anidamiento al escribir declaraciones complejas en las líneas de comando. La carga automática hace posible incluir muchas funciones en cada shell.
fuente
Soy fanático de zsh debido al soporte del modo vi, pero estoy descubriendo que no es muy utilizado. Creo que leí que a zsh le gusta tomar características populares de los otros shells y combinarlas (por lo que las cosas específicas de bash y las específicas de csh están disponibles en zsh).
Alguien también dijo que estoy flexionando mi factor geek usando zsh, pero no puedo confirmar ni negar ese rumor.
fuente
Popularidad, #bash 430 usuarios. #zsh 123 usuarios. Creo que el sitio web de zsh tiene una buena comparación de zsh con otros shells. zsh tiene mejor soporte para el modo vi.
fuente
Bash está usando la misma sintaxis para if y while que puede usarse en los scripts / bin / sh en la línea de comando.
Dentro de zsh la sintaxis es diferente. Efectivamente, usando zsh, debe recordar ambos, si está usando una instrucción if o while en su línea de comando
fuente
if [[ $test = "test" ]]; then echo "success"; else echo "failure"; fi
tanto la línea de comando como un script, y funcionó como se esperaba en ambos casos. Por lo tanto, parece que no tienes tus datos claros.