Shell de Linux para Principiantes
Un término que genera muchas dudas entre los principiantes es el Shell de Linux. Es cierto que el universo Linux cuenta con un vocabulario muy amplio y diverso, pero entender cada nomenclatura no es imposible.
Para entender todos los puntos relacionados con el Shell de Linux, desde qué son los Shells gráficos, de texto y scripting, simplemente continúa leyendo este artículo. ¡Acompáñanos!
¿Qué es el Shell de Linux?
De manera simple, Shell no es más que el prompt o intérprete de comandos que une al usuario con el kernel, o sistema operativo.
Su función es leer e interpretar las líneas de comando y dar una respuesta al usuario a través de las salidas del sistema operativo.
El nombre Shell no fue elegido al azar: similar a la palabra "concha" en inglés, en los sistemas operativos el shell no solo protege el kernel de errores del usuario sino que también ejecuta funciones de manera selectiva.
Todos los usuarios pueden acceder al Shell y escribir comandos para que sean ejecutados. A partir de esto, la interfaz de comandos devolverá al usuario un feedback conforme a lo que se encontró.
A continuación, entenderás cuáles son los Shells más comunes y cómo funciona cada uno, respectivamente.
Shells de texto (CLI)
Los Shells de texto, conocidos por la sigla CLI (Command Line Interface, del inglés), como el propio nombre sugiere, se basan en líneas de comando, que están representadas por órdenes en texto.
Shells gráficos
En contraste, los Shells Gráficos, representados por la sigla GUI (Graphical User Interface, del inglés), consisten en interfaces gráficas, que no requieren comandos en texto, digitados.
Esta versión de Shell es la más común para los principiantes, ya que puede verse en otros sistemas operativos, como Windows, en ocasiones en que es necesario mover, renombrar o copiar archivos, por ejemplo.
Shell Scripting: entiende la programación en Shell
Esta modalidad de programación en Shell facilita mucho la rutina de grandes empresas, que tienen servidores llenos de archivos, carpetas y directorios.
A partir del Shell Scripting, puedes automatizar procesos a través de un conjunto de comandos (como un código de programación).
Al igual que en lenguaje C, por ejemplo, es posible personalizar los comandos con condiciones, repeticiones y estructuras lógicas.
Esta es una buena opción para quienes desean resultados más completos del Shell, ya que los scripts proporcionan una estructura mucho más sólida que simples líneas de comando en texto.
Ventajas y Desventajas
Como pudiste notar, existen muchas ventajas al elegir el Shell Scripting para tus dispositivos o servidores.
La principal de ellas es la optimización de tiempo y obtención de resultados más profundos, completos y confiables.
Además, es con el scripting que la actividad de los usuarios puede ser controlada y monitoreada de manera más fácil y eficiente. Existen bloques de comandos específicos para verificar qué usuarios enviaron más correos electrónicos en el día, por ejemplo.
En contraste, existe la desventaja de ser un poco complejo para principiantes en el área que no tengan conocimiento previo de programación.
Pero, no te preocupes: existen diversos modelos de shell disponibles para su utilización, no necesitarás crear uno desde cero.
Proceso básico de creación del Shell Script
Para crear un Shell Script, es necesario reservar un lugar para escribir las líneas de código. Puedes hacerlo creando un nuevo documento tanto vía terminal, como opción gráfica.
Hecho esto, siempre recuerda alterar los permisos del archivo creado, agregando el permiso de editor, de lo contrario solo será posible leer el documento (lo cual no tiene sentido, ya que estaría en blanco).
Logo después, decide qué comando deseas ejecutar. Para esta acción, simplemente considera cuál es la mayor necesidad en la rutina de tu organización.
Con el código del comando en mano, selecciona el intérprete de archivos a ser utilizado. El más común es bash.
Este elemento permite al shell interpretar y "entender" lo que deseas ejecutar.
Con el código escrito, es necesario guardarlo y salir de la interfaz de comandos. Para ejecutarlo, simplemente selecciona el directorio de tu archivo y pégalo en el prompt de comandos y la información será devuelta.
Este es solo un paso a paso simple, introductorio, sobre todo lo que el Shell de Linux puede hacer por ti.
Pero, entiende que al igual que cualquier lenguaje de programación, existen muchas etapas de conocimiento involucradas, para que domines con maestría el Shell de Linux.
Para ilustrar, existen estructuras de ejecución condicionales en shell, utilizando la estructura "if and then", común en otros lenguajes.
Por eso, el mejor camino es profesionalizarse y buscar información completa, que tenga sentido lógico, para facilitar la curva de aprendizaje.
Existen muchos cursos de Linux excelentes, totalmente bien estructurados que nosotros, de Certificación Linux ofrecemos para ayudarte.
Shell para Principiantes: trabajando con eficacia, en la práctica
El Shell de Linux parece misterioso. Trabajar con él puede ser aterrador al principio, pero puedes aprender a trabajar con eficacia en el Shell.
Romper la barrera inicial del "miedo a los códigos" es el primer paso para tener éxito en el universo Shell de Linux.
Es importante tener en mente cuáles son las principales características y usos de esta herramienta y, entonces, entender las líneas de comandos y practicar.
Al igual que en muchas otras áreas, TI también exige mucha práctica después de entender lo básico de la teoría. El secreto está en entender y aplicar, hasta encontrar los resultados esperados.
Por lo tanto, entiende que ingresar comandos en el shell es más que simplemente escribirlos.
Primero, el comando debe ser válido y estar en los directorios listados en la variable PATH o con su ubicación explícita.
El comando también puede requerir opciones, generalmente precedidas por el símbolo "-" o "–" y por argumentos.
Lo importante es saber que cada comando tiene su sintaxis única y puede haber variaciones dependiendo de la distribución de Linux.
$ ls
Este comando lista los archivos en el directorio actual. No requiere ninguna opción o argumento para ejecutarse. El argumento –l puede agregarse para generar una lista de archivos detallada:
$ ls –l
También podemos agregar más opciones para el comando ls:
$ ls –l –a –t
O
$ ls –lta
En el caso del comando ls, las opciones pueden usarse por separado o combinadas. La opción –a muestra todos los archivos, incluyendo los ocultos.
La opción –t muestra los archivos ordenados por la última fecha de modificación. El orden de las opciones no es importante para ls.
Si quieres ocultar un archivo en Linux, su nombre debe necesariamente comenzar con el símbolo "." (punto). Ej: .bash_history
Para algunos comandos las opciones deben ir precedidas con dos guiones "–" en vez de un guion.
Además, algunos comandos ofrecen formas alternativas de indicar una misma opción. En el caso de ls, las opciones –a y –all producen el mismo efecto.
El detalle es que las opciones que se llaman con dos guiones no pueden combinarse.
$ ls –lt –all
Y no:
$ ls –lalllt
Algunos comandos pueden aceptar argumentos como opcionales. Para otros comandos los argumentos son necesarios.
Los argumentos son los parámetros que los comandos aceptan o necesitan. Veamos el comando ls:
$ ls –l *.txt
En el ejemplo anterior el comando ls recibió la opción –l y el argumento *.txt que filtra los archivos terminados con la extensión .txt.
Otra variación posible son los comandos que necesitan obligatoriamente de una opción para ejecutar una tarea que generalmente no va precedida por el guion.
Es común para este tipo de comandos que sus opciones sean seguidas por argumentos. Veamos como ejemplo el comando dd:
$ dd if=bootdisk.img of=/dev/fd0
El comando dd copia y convierte archivos de acuerdo con las opciones pasadas.
En el ejemplo, el comando leerá una imagen de un disco de boot (opción if=bootdisk.img) y grabará esta imagen en la unidad a: (opción of=/dev/fd0).
Casi todos los comandos aceptan la opción --help que muestra una ayuda simple de las opciones y argumentos aceptados por el comando.
¿Estás en el camino (path) correcto?
Es importante que tengas en mente que Linux solo ejecutará los comandos que sean internos del intérprete, o comandos cuya ubicación esté en la variable PATH o comandos llamados con su ruta explícita.
$ ls
O
$ /bin/ls
En el examen es muy importante que estés bien familiarizado con los comandos listados en este capítulo y su sintaxis.
Por lo tanto, necesitas saber cuándo el comando acepta opciones con un guion, dos guiones o ningún guion.
Bash también te permite ingresar una secuencia de comandos en una misma línea. Para esto debes separar los comandos con el símbolo ; (punto y coma).
$ echo $PS1; echo $PS2
Bash escribe en un archivo llamado .bash_history ubicado en el directorio home de cada usuario el historial de todos los comandos ingresados por los usuarios.
La posibilidad de recuperar los comandos ingresados es fabulosa. Esto puede ser bastante útil para fines de auditoría, recordar la memoria o simplemente ahorrar los dedos.
Podrás ver los comandos que ingresaste visualizando el contenido del archivo .bash_history.
$ cat ~/.bash_history
El comando cat, entre otras cosas, sirve para visualizar el contenido de los archivos.
A continuación tenemos una tabla detallada de los atajos en Linux para que puedas hacer uso rápido de los comandos almacenados en el archivo .bash_history.
El símbolo "~" hace referencia al directorio home del usuario conectado.
TABLA – Uso rápido de los comandos almacenados en el archivo .bash_history.
| Atajo | Descripción |
| !! | Ejecuta el último comando ingresado |
| !n | Ejecuta el comando en la línea n en el archivo .bash_history |
| !texto | Ejecuta el comando más reciente que inicia con el texto |
| !?texto | Ejecuta el comando más reciente que contiene el texto |
| ^texto1^texto2 | Ejecuta el último comando reemplazando el texto1 por el texto2 |
| Alt M < | Va al inicio del archivo .bash_history |
| Alt M > | Va al final del archivo .bash_history |
| Ctrl p | Recupera los comandos almacenados en el archivo .bash_history de atrás hacia adelante |
| Ctrl n | Recupera los comandos ya listados de adelante hacia atrás |
| Ctrl b | Retrocede un carácter en los comandos ya recuperados |
| Ctrl f | Avanza un carácter hacia adelante en los comandos ya recuperados |
| Ctrl a | Retrocede al inicio de la línea en los comandos ya recuperados |
| Ctrl e | Va al final de la línea en los comandos ya recuperados |
| Ctrl l | Limpia la pantalla |
| Ctrl d | Borra caracteres del texto desde el cursor hasta el fin de la línea |
| Ctrl k | Borra el texto desde el cursor hasta el fin de la línea de una sola vez |
| Ctrl y | Pega el texto borrado por el comando anterior en la pantalla |
| Ctrl rtexto | Busca comandos que contengan el texto desde el último comando hacia el primero |
| Ctrl stexto | Busca comandos que contengan el texto desde el primer comando hacia el último |
Esta tabla es una gran guía para tener a mano al utilizar el Shell de Linux.
Puedes guardar esta página como favorita en tu navegador, o compartir con un amigo, para siempre tener acceso fácil para consulta!
Conclusión
¿Notaste cómo existen innumerables posibilidades de uso del Shell para tu sistema Linux?
Entender los comandos puede parecer complicado, pero con un poco de atención y práctica, los recursos se vuelven más amigables y simples de manejar.
Solo hay que tener bien claro en mente todos los principios que llevan a la ejecución del comando: path, estructuras lógicas, funciones y retorno esperado.
En ese caso, siempre busca la información en fuentes confiables, publicadas por profesionales que realmente conocen el ramo y ya han trabajado en él durante mucho tiempo.
Una buena forma de encontrar información confiable, simple de entender, acompañada de aplicaciones prácticas e instrucciones correctas, es a través de los Libros Certificación Linux, publicados por el profesor Uirá Ribeiro.
También existen cursos didácticos y prácticos sobre el universo Linux, que te ayudarán a entender y aplicar todos los conceptos aprendidos. ¡Vale la pena consultar!
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.