GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué características hay en Zsh y faltan en Bash, o viceversa?

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íficos los caracteres son un poco difíciles de recordar pero extremadamente convenientes (ya que a menudo es más rápido buscarlos que escribir el equivalente find) dominio). Algunos de los ejemplos más simples:
        foo*~*.bak =todas las coincidencias para foo* excepto aquellos que coincidan con *.bak
        foo*(.) =solo archivos normales que coincidan con foo*
        foo*(/) =solo directorios que coincidan con foo*
        foo*([email protected]) =solo enlaces simbólicos colgantes que coinciden con foo*
        foo*(om[1,10]) =los 10 archivos más recientes que coinciden con foo*
        foo*(Lm+1) =solo archivos de tamaño> 1 MB
        dir/**/foo* =foo* en el directorio dir y todos sus subdirectorios, recursivamente⁴

  • Para cambios de nombre sofisticados, zmv incorporado puede ser útil. Por ejemplo, para copiar cada file a file.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 o autoload -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.

Relacionado:¿Qué significa '>/dev/null 2>&1' en este artículo de conceptos básicos de crontab?

²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.


Linux
  1. ¿Qué comandos faltan en su archivo bashrc?

  2. ¿Diferencia entre 'y' en la línea de comando (bash)?

  3. ¿Qué son los separadores de palabras de Readline?

  4. ¿Cuáles son las diferencias fundamentales entre los principales * nix Shells?

  5. ¿Qué beneficios vería actualizar de 14.04 a 15.04 y cuáles son algunas advertencias?

¿Qué es Intel SGX y cuáles son los beneficios?

¿Qué es el hipervisor y cuáles son sus tipos?

¿Qué es Zsh? ¿Deberías usarlo?

¿Qué es una base de datos distribuida y para qué sirven los sistemas de datos distribuidos?

¿Cuáles son las llamadas al sistema operativo/sistema nativo de Windows y Linux realizadas desde malloc()?

¿Qué es exactamente <() en bash (y =() en zsh)?