¿Qué es una Shell?
Una shell es un intérprete de comandos. Una forma de dar instrucciones a nuestro sistema operativo, que este sea capaz de entender y ejecutar. Mediante la linea de comandos tecleamos las instrucciones en el intérprete, que las envia al sistema operativo. Es una utilidad Imprescindible en Linux, y con equivalentes similares presentes en otros sistemas operativos.
Algunos lenguajes de scripting para la shell que puedes encontrar en linux son:
- Bash (Bourne Again Shell) es sin duda el mas conocido y difundido.
- Zsh (Z Shell), similar a Bash pero con mejoras en autocompletado.
- Dash (Debian Almquist Shell), ás ligero que Bash, usado en scripts del sistema en Debian y Ubuntu.
- Ksh (Korn Shell), rápido y con características avanzadas de scripting
- Fish (Friendly Interactive Shell), orientado a facilidad de uso, con autocompletado y ayuda en línea
Aunque no se trata de intérpretes totalmente compatibles (seguramente un script complejo necesitará adaptación para ejecutarse con otro intérprete) tienen muchas similitudes; aprendiendo bash, seguramente no tendrás muchas dificultades si después tienes que usar otro intérprete. Los comandos básicos suelen ser los mismos y las estructuras de control (if else, bucles) serán similares.
Incluso windows tiene su propia ventana de comandos, batch, que viene de MSDOS, aunque ha perdido relevancia frente a POWER-SHELL, que actualmente esta disponible también en linux y mac (y no tiene nada que ver con bash).
Por último, mencionar que Microsoft ha "adoptado" bash a través de su integración con el Windows Subsystem for Linux (WSL) .
¿Por qué es Importante la Shell?
- Comunicación Directa con el Sistema: Permite una interacción directa y precisa con el sistema operativo. La shell o consola fue la primera forma de comunicación con los ordenadores modernos; de hecho los sistemas de ventanas, inicialmente, no eran sino una capa superpuesta que permitía introducir comandos mas cómodamente, mediante menús o acciones de ratón. La linea de comandos sigue siendo, sin embargo, la forma mas potente y precisa de comunicación con el sistema operativo, que nos permite manipular archivos, directorios, procesos, usuarios, permisos y muchas otras funciones del sistema.
- Automatización de Tareas: A través de los scripts (guiones), puedes escribir instrucciones para automatizar tareas repetitivas o complejas. Puedes incluso programar que ejecuten estas tareas a horas o fechas determinadas.
- Administración del Sistema: La utilización de la linea de comandos para la realización de tareas es mucho mas rápida, flexible y poderosa que el equivalente en un entorno gráfico. Es por eso una herramienta de uso imprescindible y diario para los administradores de sistemas.
- Ubicuidad en Sistemas Linux: Bash es la shell predeterminada en la mayoría de las distribuciones de Linux y también está disponible en otros sistemas Unix y macOS. Existen otras shells o intérpretes de comandos, que en general utilizan lenguajes con los mismos comandos básicos y la estructura general del scripting.
- Aprendizaje Profundo del Sistema: Trabajar con la shell te obliga a comprender cómo funciona el sistema operativo por debajo de la interfaz gráfica y como interactuan los distintos componentes, lo que te permite un conocimiento más profundo,
shell y terminal
Aunque a menudo la gente se refiere indistintamente a ambas, shell es el lenguaje que se encarga de procesar los comandos y ejecutar programas, y terminal es la interfaz gráfica o virtual donde se ejecuta la shell. Hay muchas, como GNOME Terminal, Konsole, xterm etc; también puedes instalar otras terminales con alguna utilidad extra, como terminator, o guake.
La terminal no es solo para ejecutar comandos de la shell, sino que es una herramienta que permite interactuar con redes (ftp, ssh, telnet), o administrar el sistema o ejecutar scripts en Python, Perl, Ruby, PHP y en fin, una gran variedad de aplicaciones.
Tanto bash como la terminal tienen capacidad para escribir y mostrar carácteres UNICODE; la clave es que ambas estén configurados para usar la misma codificación de caracteres, y esa codificación sea compatible con Unicode. La codificación estándar de facto en sistemas Linux y macOS es UTF-8.
- Anterior « Inicio del tema
- Siguiente Comandos básicos »