Si utilizamos cualquier sistema operativo importante, estamos interactuando indirectamente con el caparazón . Mientras ejecutamos Ubuntu, Linux Mint o cualquier otra distribución de Linux, interactuamos con el shell mediante el terminal. En este artículo analizaremos los shells de Linux y los scripts de shell, por lo que antes de comprender los scripts de shell debemos familiarizarnos con la siguiente terminología:
- Núcleo
- Caparazón
- Terminal
Tabla de contenidos
- ¿Qué es el núcleo?
- ¿Qué es Shell?
- Shell de línea de comando
- Conchas gráficas
- ¿Qué es una terminal?
- Secuencias de comandos de shell
¿Qué es el núcleo?
El kernel es un programa informático que es el núcleo del sistema operativo de una computadora, con control total sobre todo lo que hay en el sistema. Gestiona los siguientes recursos del sistema Linux:
- Gestión de archivos
- Gestión de proceso
- gestión de E/S
- Gestión de la memoria
- Gestión de dispositivos, etc.
A menudo se confunde con que Linus Torvalds haya desarrollado el sistema operativo Linux, cuando en realidad sólo es responsable del desarrollo del kernel de Linux.
Sistema Linux completo = Kernel + GNU bibliotecas y utilidades del sistema + otros scripts de administración + scripts de instalación.
¿Qué es Shell?
Un shell es un programa de usuario especial que proporciona una interfaz para que el usuario utilice los servicios del sistema operativo. Shell acepta comandos legibles por humanos de los usuarios y los convierte en algo que el kernel pueda entender. Es un intérprete de lenguaje de comandos que ejecuta comandos leídos desde dispositivos de entrada como teclados o archivos. El shell se inicia cuando el usuario inicia sesión o inicia el terminal.
dormir

Shell de Linux
Shell se clasifica en términos generales en dos categorías:
- Shell de línea de comando
- caparazón gráfico
Shell de línea de comando
Los usuarios pueden acceder a Shell mediante una interfaz de línea de comandos. Se proporciona un programa especial llamado Terminal en Linux/macOS, o Símbolo del sistema en el sistema operativo Windows para escribir comandos legibles por humanos, como cat, ls, etc., y luego se ejecuta. Luego, el resultado se muestra en el terminal al usuario. Una terminal en el sistema Ubuntu 16.4 se ve así:

línea de comando de Linux
En la captura de pantalla anterior es comando con -l Se ejecuta la opción. Enumerará todos los archivos en el directorio de trabajo actual en un formato de lista larga.
Trabajar con un shell de línea de comandos es un poco difícil para los principiantes porque es difícil memorizar tantos comandos. Es muy poderoso; permite a los usuarios almacenar comandos en un archivo y ejecutarlos juntos. De esta forma, cualquier tarea repetitiva se puede automatizar fácilmente. Estos archivos generalmente se denominan archivos por lotes en Windows y Caparazón Scripts en sistemas Linux/macOS.
Conchas gráficas
Los shells gráficos proporcionan medios para manipular programas basados en la interfaz gráfica de usuario (GUI), al permitir operaciones como abrir, cerrar, mover y cambiar el tamaño de ventanas, así como cambiar el foco entre ventanas. El sistema operativo Windows o el sistema operativo Ubuntu pueden considerarse como un buen ejemplo que proporciona una GUI al usuario para interactuar con el programa. Los usuarios no necesitan escribir comandos para cada acción. Una GUI típica en el sistema Ubuntu –

Carcasa GUI
dialecto de hibernación
Hay varios shells disponibles para sistemas Linux como:
- BASH (Bourne Again SHell): es el shell más utilizado en sistemas Linux. Se utiliza como shell de inicio de sesión predeterminado en sistemas Linux y macOS. También se puede instalar en el sistema operativo Windows.
- CSH (C SHell): la sintaxis del shell C y su uso son muy similares al lenguaje de programación C.
- KSH (Korn SHell): Korn Shell también fue la base para las especificaciones estándar de POSIX Shell, etc.
Cada shell hace el mismo trabajo pero comprende diferentes comandos y proporciona diferentes funciones integradas.
¿Qué es una terminal?
Un programa que se encarga de proporcionar una interfaz a un usuario para que pueda acceder al shell. Básicamente, permite a los usuarios ingresar comandos y ver el resultado de esos comandos en una interfaz basada en texto. En la terminal se ejecutan scripts de gran tamaño escritos para automatizar y realizar tareas complejas.
Para acceder al terminal, simplemente busque en el cuadro de búsqueda del terminal y haga doble clic en él.
terminal abierta
Python convierte bytes a cadena
Aquí puedes ver cómo se ve la terminal de Red Hat Linux.
Terminal
Secuencias de comandos de shell
Por lo general, los shells son interactivos, lo que significa que aceptan comandos como entrada de los usuarios y los ejecutan. Sin embargo, a veces queremos ejecutar un montón de comandos de forma rutinaria, por lo que tenemos que escribir todos los comandos cada vez en la terminal.
Como un shell también puede tomar comandos como entrada desde un archivo, podemos escribir estos comandos en un archivo y ejecutarlos en el shell para evitar este trabajo repetitivo. Estos archivos se llaman Guiones de shell o Programas Shell . Los scripts de Shell son similares al archivo por lotes en MS-DOS. Cada script de shell se guarda con `.sh` extensión de archivo, por ejemplo, myscript.sh.
Un script de shell tiene una sintaxis como cualquier otro lenguaje de programación. Si tiene experiencia previa con algún lenguaje de programación como Python, C/C++, etc., sería muy fácil comenzar con él.
Un script de shell comprende los siguientes elementos:
- Palabras clave de Shell: si, en caso contrario, romper, etc.
- Comandos de Shell: cd, ls, echo, pwd, touch, etc.
- Funciones
- Flujo de control: si... entonces... si no, bucles de caso y shell, etc.
¿Por qué necesitamos scripts de shell?
Hay muchas razones para escribir scripts de shell:
- Para evitar trabajos repetitivos y automatizaciones
- Los administradores del sistema utilizan scripts de shell para realizar copias de seguridad de rutina.
- Monitoreo del sistema
- Agregar nuevas funciones al shell, etc.
Algunas ventajas de los scripts de shell
- El comando y la sintaxis son exactamente los mismos que los ingresados directamente en la línea de comando, por lo que los programadores no necesitan cambiar a una sintaxis completamente diferente.
- Escribir scripts de shell es mucho más rápido
- Inicio rápido
- Depuración interactiva, etc.
Algunas desventajas de los scripts de shell
- Propenso a errores costosos, un solo error puede cambiar el comando, lo que podría resultar perjudicial.
- Velocidad de ejecución lenta
- Defectos de diseño dentro de la sintaxis o implementación del lenguaje.
- No es muy adecuado para tareas grandes y complejas.
- Proporciona una estructura de datos mínima a diferencia de otros lenguajes de programación. etc.
Demostración simple de scripts de shell usando Bash Shell
Si trabaja en una terminal, algo que recorre en lo más profundo de los directorios. Luego, para encontrar algunos directorios en la ruta, tenemos que ejecutar un comando como este como se muestra a continuación para llegar al directorio de Python:
diferencia de fecha de excel

llegar al directorio de Python:
Es bastante frustrante, entonces, ¿por qué no podemos tener una utilidad en la que solo tenemos que escribir el nombre del directorio y podemos saltar directamente a él sin ejecutar el comando? cd ../ comando una y otra vez. Guarde el guión como jump.sh
intento # !/bin/bash # A simple bash script to move up to desired directory level directly function jump() { # original value of Internal Field Separator OLDIFS=$IFS # setting field separator to '/' IFS=/ # converting working path into array of directories in path # eg. /my/path/is/like/this # into [, my, path, is, like, this] path_arr=($PWD) # setting IFS to original value IFS=$OLDIFS local pos=-1 # ${path_arr[@]} gives all the values in path_arr for dir in '${path_arr[@]}' do # find the number of directories to move up to # reach at target directory pos=$[$pos+1] if [ '' = '$dir' ];then # length of the path_arr dir_in_path=${#path_arr[@]} #current working directory cwd=$PWD limit=$[$dir_in_path-$pos-1] for ((i=0; i; i++)) do cwd=$cwd/.. done cd $cwd break fi done }>
Por ahora, no podemos ejecutar nuestro script de shell porque no tiene permisos. Tenemos que hacerlo ejecutable escribiendo el siguiente comando:
$ chmod +x ruta/a/nuestro/archivo/jump.sh
Ahora, para que esto esté disponible en cada sesión de terminal, tenemos que ponerlo en .bashrc archivo.
.bashrc es un script de shell que Bash ejecuta cada vez que se inicia de forma interactiva. El propósito de un archivo .bashrc es proporcionar un lugar donde puede configurar variables, funciones y alias, definir nuestro mensaje y definir otras configuraciones que queremos usar cada vez que abrimos una nueva ventana de terminal.
Ahora abra la terminal y escriba el siguiente comando:
java reemplaza todo
$ fuente de eco ~/ruta/a/nuestro/archivo/jump.sh>> ~/.bashrc
Ahora abra su terminal y pruebe la nueva funcionalidad de salto escribiendo el siguiente comando:
$ saltar nombre_directorio
al igual que la siguiente captura de pantalla:

saltar nombre_directorio
Conclusión
En este artículo conocimos las partes esenciales de los sistemas Linux: el kernel, que lo controla todo, el shell, que nos permite interactuar con el sistema operativo, y la terminal, nuestra interfaz para dar comandos. Exploramos la línea de comandos y los shells gráficos, como BASH, y comprendimos que la terminal es donde escribimos nuestros comandos. El artículo presentó los scripts de shell, una forma de automatizar tareas utilizando scripts simples, y analizó las ventajas y desventajas de su uso. Un ejemplo práctico demostró la creación de un script para una navegación rápida por el directorio. Finalmente, vimos cómo hacer que el script funcione y sea accesible en cada sesión de terminal. Este artículo es una guía para principiantes para comprender y utilizar shells de Linux y secuencias de comandos de shell. Linux es un buen lenguaje, está escrito en lenguaje Linux.