Es posible que hayas escuchado la expresión "cuando todo lo que tienes es un martillo, todos los problemas parecen clavos". Eso no se aplica al maravilloso mundo de las conchas POSIX. Para los no iniciados, una pantalla negra brillante llena de texto verde es lo mismo que cualquier otra pantalla negra brillante llena de texto verde, pero muchos administradores de sistemas saben que el shell que elija puede cambiar todas las facetas de cómo interactúa con su computadora.
No es raro descubrir esto de la manera más difícil, generalmente bajo presión. Sin embargo, una vez que experimenta la impotencia de ingresar la sintaxis incorrecta en un shell desconocido, rápidamente desarrolla un archivo adjunto al que se siente cómodo. Aun así, los shells más populares tienen virtudes que hacen que diferentes administradores de sistemas los establezcan como la interfaz predeterminada. . Si pasa un poco de tiempo con cada uno, es posible que desarrolle un nuevo favorito, o al menos que pueda instalarse en un shell de respaldo confiable.
Estos son algunos de los shells más populares y lo que les encanta a los usuarios.
Ash y Dash
El caparazón Almquist se desarrolló como un clon del famoso caparazón Bourne (que no debe confundirse con el caparazón Bourne Again, también conocido como Bash). Se mantuvo intencionalmente liviano, probablemente por la misma razón por la que originalmente se excluyeron la edición de líneas y el historial:Kenneth Almquist sintió que las funciones adicionales de UX pertenecían fuera del shell. Décadas más tarde, el caparazón sigue siendo uno de los caparazones pequeños y básicos favoritos. Se envió con las versiones iniciales de Android y fue un shell predeterminado común para el entorno de arranque mínimo de las distribuciones de Linux durante muchos años.
Al igual que con muchos shells POSIX, el uso de Ash es nominalmente familiar para cualquiera que esté acostumbrado a una consola. Escribes comandos; obtienes salida. Algunas de las características adicionales están ahí, mientras que otras faltan. Por ejemplo, si está acostumbrado a usar métodos abreviados de teclado de estilo Emacs o Vim, los encontrará notablemente ausentes de Ash. Sin embargo, puede habilitarlos (siempre que se hayan incluido en tiempo de compilación) con -E
(para Emacs) o -V
(para Vim) opción. Historial (en realidad, el fc
comando incorporado en Ash) tampoco es un hecho, dependiendo de cómo se compiló Ash. No hay arreglos y el comando integrado trap no acepta opciones.
Dash es un shell de Almquist y, de hecho, es una adaptación de Ash de NetBSD a Debian Linux, y significa Debian Almquist Shell. .
La mejor característica de Ash es también su mayor limitación. Es un caparazón mínimo, así que si buscas simplicidad, este es el caparazón para ti.
Bash
El Bourne-Again Shell (Bash) fue creado por el proyecto GNU para reemplazar el propietario Bourne shell (que a su vez fue creado para reemplazar el shell de Ken Thompson). Hoy, Bash es más que un simple shell:es un lenguaje de programación legítimo, una de las principales herramientas del administrador de sistemas ingenioso y casi un ícono cultural para los no programadores que necesitan una automatización rápida y sucia. Si puede pasar un día en un shell de Linux, entonces puede desarrollar un script Bash para reemplazarlo. Es simple, directo y sorprendentemente poderoso, con funciones que incluyen arreglos, una pila de directorios, trampas, análisis de subcadenas, atajos de teclado de Emacs o Vim y mucho más.
Un argumento común en contra Bash es su tamaño, que en mi sistema es de aproximadamente 1 MB en comparación con los 200 KB de Ash. Otra es su complejidad. Bash tiene tantas funciones que, si bien un script escrito en POSIX puro se ejecutará en Bash, no siempre ocurre lo mismo con un script Bash que intente ejecutarse en un shell POSIX puro. Si bien Bash tiene un modo POSIX, sus "Bashisms" adicionales suelen ser demasiado atractivos para ignorarlos. La buena noticia es que Bash es de código abierto, por lo que se puede instalar fácilmente para ejecutar un script lleno de Bash-ismos, pero algunos usuarios se oponen por principio.
Bash es un shell flexible y potente y ha desplazado a otros shells como predeterminado en muchos sistemas. Aprenda Bash y experimentará un shell moderno y rico en funciones que muestra todos los signos de volverse más y más amigable a medida que continúa desarrollándose.
[ Descargar ahora:una guía para administradores de sistemas sobre secuencias de comandos Bash. ]
Busybox
BusyBox es un binario de llamadas múltiples que combina muchas utilidades POSIX comunes en un solo ejecutable. En otras palabras, es el binario todo en uno de la interfaz de usuario central de POSIX. Cuando se instala desde el código fuente, coloca un busybox
ejecutable en la biblioteca de su sistema, y se espera que lo vincule al crear comandos individuales para usted y sus usuarios. Por ejemplo:
$ ln --symbolic /lib64/busybox/busybox gzip
$ gzip --help
BusyBox v1.28.1 (2020-07-13 11:42:31 NZST) multi-call binary.
Usage: gzip [-cfkdt123456789] [FILE]...
En menos de 1 MB, obtiene alrededor de 400 comandos, incluido ls , cd , cp , mv , grep , pd , contraseña , apagar , imprimir , sed , utilidades de compresión, gestión de procesos y mucho más. La mayoría de estos comandos son mínimos en comparación con sus equivalentes de GNU, pero dependiendo de su caso de uso, es probable que sean suficientes. Del mismo modo, el caparazón interactivo de Busybox es Ash, por lo que cumple con las especificaciones POSIX y ofrece poco más.
Csh o Tcsh
El C Shell (csh
), y su encarnación posterior, tcsh
, use una sintaxis similar a C (o C++ o Java, en caso de que esté más familiarizado con ellos). Por ejemplo, aquí hay un if
bucle en Bash:
v=1
if [[ $v == 1 ]]
then
echo "verbose"
fi
Y aquí está lo mismo en Csh:
set v=1
if ($v == 1) then
echo "verbose"
endif
La diferencia es sutil, pero para las personas acostumbradas a la sintaxis de C y lenguajes similares, hay suficientes pequeñas diferencias para mejorar notablemente su experiencia. También faltan algunos comandos integrados. Por ejemplo, no hay type
o hash
comandos en tcsh
, y no puede definir sus propias funciones.
Mientras que csh
sufre un poco por su edad, tcsh
es una buena actualización y tiene la mayoría de las mismas capacidades que Bash, aunque con una sintaxis diferente de vez en cuando.
Pescado
El caparazón Fish se autodenomina con orgullo "un caparazón moderno para los años 90". Tiene todos los beneficios de shells robustos como Bash y Zsh, pero con características adicionales como resaltado de sintaxis, un fish_config
comando, y mucho más. Su objetivo es proporcionar contexto adicional al usuario y un mejor sistema de gestión de configuración que un solo .bashrc
.
Hay ligeras diferencias en la sintaxis aquí y allá. Por ejemplo, esta es una definición de función para Bash:
function sshrm() {
/usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
}
Lo mismo en Fish, sin embargo:
function sshrm
/usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
end
A los fanáticos de Fish les encantan sus sencillas capacidades de creación de temas y la forma predeterminada en un directorio de archivos de configuración en lugar de un .bashrc
archivo que, en el mejor de los casos, origina otros archivos de puntos.
Korn
El shell de Korn (ksh
) fue desarrollado por David Korn y lanzado en 1983. Mientras que tanto Bash como tcsh
se han enviado como los shells predeterminados para los sistemas POSIX populares, el shell Korn se ha mantenido en gran medida como un shell "alternativo". Pero a medida que avanzan los shells alternativos, ksh
le ha ido bien, y cuando Microsoft presentó Powershell en conferencias tecnológicas, mencionaron el shell Korn como su principal influencia.
Hay algunas versiones diferentes de Korn shell (mksh, ksh93, ksh93u+, ksh2020 y otras), pero las sucursales oficiales se mantienen en Github de AT&T.
Para los usuarios de Bash, ksh
es probable que se sienta bastante familiar. Leer un tutorial sobre las secuencias de comandos de Korn es casi lo mismo que leer sobre las secuencias de comandos de Bash. Puede definir sus propias funciones, crear alias, escribir bucles e incluso programar opciones de finalización con pestañas. Las combinaciones de teclas de Emacs están habilitadas de forma predeterminada, pero puede cambiar a vi
combinaciones de teclas usando -o vi
opción en el lanzamiento, o colocando set -o vi
en su ~/.environ.ksh
archivo de configuración.
Lo que le falta a Kornshell, probablemente no lo notará de inmediato. Por ejemplo, no puede habilitar o deshabilitar los comandos integrados, y hay un comando integrado llamado whence
que hace el mismo trabajo que el which
ejecutable. No hay typeset
comando, pero Kornshell tiene matrices con las funciones de búsqueda más esenciales disponibles. En otras palabras, aunque existen diferencias menores, ksh
es fácil de usar para cualquiera que esté acostumbrado a Bash o Fish o Zsh.
Zsh
El shell Z (zsh
) es un shell POSIX interactivo similar a Bourne conocido por su abundancia de características innovadoras. Los usuarios de Z Shell a menudo citan sus muchas comodidades y le atribuyen una mayor eficiencia y una amplia personalización. Cuando se lanza por primera vez, Zsh ofrece varias opciones de configuración, como el tamaño de su historial, combinaciones de teclas (Emacs o Vim) y cuántas funciones adicionales desea. Por ejemplo, puedes hacer que el cd
comando implícito al permitir que Zsh inicie un cambio de directorio cuando proporciona una ruta no ejecutable sin comando. Hay varias características adicionales, y puede configurarlas o deshabilitarlas editando el .zshrc
archivo de configuración.
Hay algunas diferencias sutiles en la sintaxis entre Bash y Zsh, pero pocos son comandos que a menudo están programados, por lo que la probabilidad de que tenga que adaptar los scripts es baja. Por ejemplo, para deshabilitar un comando incorporado en Bash:
$ enable -n cd
En Zsh, el comando es un poco más intuitivo:
$ disable cd
Para reconstruir rutas de comandos almacenadas en caché en Bash, debe borrar la existente, pero en Zsh hay una opción para ello:
$ hash -f
También hay pequeñas ventajas para aquellos que migran desde otros caparazones. Por ejemplo, puede usar el whence
comando en Z Shell, que sería familiar para los usuarios de Korn shell.
Zsh es una combinación divertida y dinámica de funciones antiguas y nuevas, y tiene una comunidad vibrante que desarrolla temas y complementos para él. Estos son fáciles de instalar y agregan aún más funciones a su carcasa, lo que convierte a Z Shell en un competidor para la carcasa más flexible disponible.
Elige tus conchas
Como es habitual con el código abierto, en realidad no tiene que elegir solo una de las herramientas dadas. Si bien soy un usuario devoto de Bash en casa, a menudo prefiero tcsh
por costumbre en el trabajo, porque muchos de los guiones en la industria de los efectos visuales fueron escritos para C Shell. Hasta el día de hoy, escribo compulsivamente ganchos de Git en tcsh
por esa razón.
No necesariamente tiene que justificar su elección de caparazón. Use lo que funcione mejor para usted y su equipo. Siempre que sea de código abierto, ha hecho una gran elección.
[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ]