El shell predeterminado en Mac OS X es bash
, que generalmente estoy feliz de usar. Solo lo doy por sentado. Sin embargo, sería realmente bueno si completara automáticamente más cosas , y he escuchado cosas buenas zsh
al respecto. Pero realmente no tengo la inclinación de pasar horas jugando con la configuración para mejorar mi uso de la línea de comando en una pequeña cantidad, ya que mi vida en la línea de comando no es tan mala.
(Según tengo entendido, bash
también se puede configurar para que se complete automáticamente de manera más inteligente. Es la configuración que no estoy tan interesado).
¿Cambiar a zsh
, incluso en un pequeño número de casos, me facilitará la vida? ¿O es solo un mejor caparazón si dedicas tiempo a aprender por qué es mejor? (Los ejemplos también serían buenos :)
)
@ Rodney Amato
y @ Vulcan Eager
dan dos buenas razones para seguir bash
y cambiar respectivamente zsh
. ¡Parece que tendré que investigar ambos! Oh bien:)
¿Hay alguien con una opinión de ambos lados del argumento?
Respuestas:
Para uso casual, probablemente sea mejor quedarse con bash y simplemente instalar bash complete.
Instalarlo es bastante fácil, tome el bash-completar-20060301.tar.gz de http://www.caliban.org/bash/index.shtml#completion y extráigalo con
luego copie el archivo bash_completion / bash_completion a / etc con
que le pedirá su contraseña. Probablemente desee crear un directorio /etc/bash_completion.d para cualquier script de finalización adicional (por ejemplo, tengo el script de finalización de git allí).
Una vez hecho esto, el último paso es asegurarse de que el archivo .bash_profile en su directorio de inicio tenga
en él para cargar el archivo de finalización cuando inicia sesión.
Para probarlo, simplemente abra una nueva terminal e intente completar en cvs y debería mostrarle las opciones de cvs en la lista de finalizaciones.
fuente
brew install bash-completion
.brew tap homebrew/versions; brew install bash-completion2
Personalmente, me encanta zsh.
En general, probablemente no notarás la diferencia entre él y bash, hasta que quieras hacer rápidamente cosas como el engrosamiento recursivo:
**/*.c
por ejemplo.O utilice alias de sufijo para asociar programas específicos con diferentes sufijos, de modo que pueda "ejecutarlos" directamente. El siguiente alias le permite "ejecutar" un archivo fuente C en el indicador simplemente escribiendo
./my_program.c
, lo que funcionará exactamente como si lo hubiera hechovim ./my_program.c
. (Más o menos el equivalente a hacer doble clic en el icono de un archivo).alias -s c=vim
O imprima los nombres de los archivos modificados hoy:
print *(e:age today now:)
Probablemente pueda hacer todas estas cosas en bash, pero mi experiencia con zsh es que si hay algo que quiero hacer, probablemente pueda encontrarlo en zsh-lovers . También encuentro el libro ' De Bash a Z-Shell ' realmente útil.
¡Jugar con la mente una cantidad asombrosamente grande de opciones también es muy divertido!
fuente
find
olocate
para buscar de forma recursiva. Pero una vez que está permitiendo que otro programa haga la búsqueda, pierde los límites entre los nombres (a menos que tenga cuidado), así como el acceso a las capacidades internas de globbing del shell, y básicamente tiene que conformarse con lo que proporciona el otro programa, o canalizar su salida a través de un programa comogrep
,awk
osed
(todo bastante complejo por derecho propio).globstar
opción en bash para permitir la búsqueda recursiva como se mencionó anteriormente. Sin embargo, estoy bastante seguro de que ese no fue el caso cuando se escribió esta respuesta.glob_star_short
adentrozsh
, ahora puedes hacer**.c
, que se interpreta como**/*.c
.zsh 5.3
y conseguircommand not found: age
conprint *(e:age today now:)
Cambia a zsh. Tendrás acceso a:
zmv
: Puedes hacer:zmv '(*).mp3' '$1.wma'
para miles de archivos.zcalc
: Calculadora extremadamente cómoda, mejor quebc
.zparseopts
: One-liner para analizar opciones complejas arbitrarias dadas a su script.autopushd
: Siempre puede hacer lopopd
siguientecd
para volver a su directorio anterior.fuente
autoload zcalc; zcalc
(aunque yo mismo escribopython
siempre que necesito una calculadora).zmv
yzcalc
no están disponibles fuera de la caja. No está claro quezmv
solo se esté renombrando archivos; Pensé que podrías haber estado convirtiendo el formato. No sé qué significa incluso "hashes". Esta publicación parece que solo es "útil" para las personas que ya conocen zsh.bash
4 se lanzó solo unos meses antes de esta respuesta.Si todo lo que quiere usar ZSH es una mejor terminación, la configuración es bastante fácil. Coloque esto en su ~ / .zshrc:
Sin embargo, vale la pena echarle un vistazo a todas las otras excelentes características de ZSH. El ejemplo anterior le dará un mensaje bastante simple con una buena finalización. Si no quiere jugar con las configuraciones, pero quiere ver qué puede hacer ZSH por usted, busque "zshrc" en Google y obtendrá algunas configuraciones listas para usar para comenzar.
fuente
zsh tiene una configuración de consola gui. Puede configurarlo de manera bastante rápida y fácil sin tener que manipular los archivos de configuración. No creo que necesite mucho tiempo para configurarlo, probablemente 10 segundos con solo usar los valores predeterminados, así que continúe y pruébelo.
fuente
zsh
sin ningún archivo de puntos relacionado. Para obtenerlo manualmente, intenteautoload -U +X zsh-newuser-install; zsh-newuser-install -f
Staale está hablando de un programa similar a un asistente (CUI) que se ejecuta automáticamente la primera vez que ejecuta zsh. Simplemente responda algunas preguntas, vea / cambie los valores predeterminados y está configurado para usted.
IBM developerWorks tiene excelentes recursos en zsh.
No he usado funciones muy avanzadas y hasta ahora no he encontrado serias diferencias que puedan obstaculizar a alguien que viene de bash.
Algunos ejemplos:
!? pattern <Tab> se completará automáticamente con el último comando en el patrón de coincidencia del historial. Muy útil.
Puede configurar un aviso en el RHS. Un uso es mantener un indicador de ancho fijo en el lado izquierdo para que todos los comandos se alineen bien mientras se muestra el pwd (o cualquier cosa de ancho variable) como el indicador del lado derecho.
Puede redirigir la entrada de múltiples archivos (aún para probar esto): cat <archivo1 <archivo2 <archivo3
fuente