Fundamentos de Bash

Contenido

En este artículo vamos a ver algunos conceptos fundamentales sobre la línea de comandos, archivos, directorios, también veremos por encima que son las variables y las constantes en Bash Scripting y de que forma se fusionan y se redirigen los distintos comandos utilizados en los sistemas Linux para crear programas ya automatizar tareas.

Cabe destacar que este artículo es un toma de contacto para que conozcas los principales conceptos con los que se trabajan al crear scripts en Bash, a lo largo del curso, iremos profundizando y realizando ejercicios prácticos sobre cada uno de estos conceptos para reforzar el aprendizaje. 

Introducción a la línea de comandos

La línea de comandos es una interfaz de usuario que permite interactuar con el sistema operativo mediante la introducción de comandos en lugar de hacer clic en iconos o menús en una interfaz gráfica de usuario (GUI).

La línea de comandos se compone de un prompt, que es un indicador que muestra el nombre del usuario, el nombre del equipo y el directorio actual, seguido de un cursor que indica la posición donde se puede escribir el comando.

Prompt

En el ámbito de Linux, «prompt» se refiere al símbolo o texto que aparece en la línea de comandos y que indica que el sistema está esperando una entrada del usuario. El prompt generalmente se muestra después del nombre de usuario y el nombre de host, y puede incluir información adicional, como el directorio actual o el número de versión del sistema operativo.

En la línea de comandos de Linux, el prompt predeterminado para el usuario «usuario» en un sistema con nombre de host «hostname» puede ser:

				
					usuario@hostname:~$

				
			
  • ($) : Indica que el sistema está listo para recibir una entrada del usuario. 
  • (~) : Indica que el usuario está en su directorio de inicio
  • (:) : Separa el nombre de usuario y el nombre del host.

El prompt se puede personalizar para adaptarse a las preferencias del usuario, y algunos usuarios pueden preferir usar prompts personalizados para indicar información adicional o para hacer que la línea de comandos sea más fácil de leer.

Una buena herramienta para personalizar el promp es utilizando Powerlevel10k.

Comandos

Los comandos en la línea de comandos se componen de una palabra clave o un nombre de programa seguido de argumentos y opciones. Las opciones suelen empezar con un guion (-) y modifican el comportamiento del comando, mientras que los argumentos proporcionan la información necesaria para que el comando pueda realizar su tarea.

Por ejemplo, el comando ls en Linux se utiliza para mostrar una lista de los archivos y directorios en un directorio especificado. Si se ejecuta simplemente ls, se muestra una lista de los archivos en el directorio actual. Sin embargo, si se desea ver la información detallada de cada archivo, se puede utilizar la opción -l para mostrar más detalles, como los permisos del archivo, la fecha de modificación y el tamaño del archivo.  La sintaxis del comando completo sería ls -l.

Ventajas de la línea de comandos:

Algunas ventajas de la línea de comandos son:

  • Mayor control: La línea de comandos proporciona un mayor control sobre el sistema, ya que se pueden realizar tareas específicas que no están disponibles en una interfaz gráfica de usuario.

  • Automatización: La línea de comandos permite la automatización de tareas mediante scripts, que pueden ser programados para realizar tareas complejas de forma repetitiva.

  • Eficiencia: En algunos casos, la línea de comandos puede ser más eficiente que una interfaz gráfica de usuario, especialmente para tareas que involucran procesamiento de datos o manipulación de archivos.

Sin embargo, también hay algunas desventajas en el uso de la línea de comandos, como la curva de aprendizaje inicial y la necesidad de memorizar comandos y opciones.

Lectura recomendada

Link de Compra en Amazon: 
🛒 https://amzn.to/4fuFS2R

Contenido del libro:

Este es un libro práctico que muestra la manera de elaborar tu estrategia de ciberseguridad paso a paso.

Link de Compra en Amazon: 
🛒 https://amzn.to/3VSZ7fA

Contenido del libro:

Al final de este libro podrá crear scripts de shell con facilidad.  Enseña cómo realizar tareas tediosas y repetitivas y convertirlas en programas que ahorran tiempo y simplifican su vida en sistemas Linux, Unix o MAC.

 

Introducción a Bash Shell:

¿Qué es la línea de comandos?

Es una forma de interactuar con un sistema operativo y sus programas mediante el uso de comandos escritos en lenguaje natural o sintaxis específica. A través de la línea de comandos, los usuarios pueden realizar una variedad de tareas, como navegar por el sistema de archivos, manipular archivos y directorios, instalar y actualizar programas, administrar procesos, configurar el sistema, entre otras. La línea de comandos es ampliamente utilizada en sistemas operativos basados en Unix y Linux, pero también está disponible en otros sistemas operativos, como macOS y Windows.

¿Qué es Bash Shell?

Es una de las shells más populares y ampliamente utilizadas debido a su flexibilidad y potencia. Bash proporciona una interfaz de línea de comandos para interactuar con el sistema operativo y ejecutar comandos y programas. También es capaz de interpretar scripts, lo que permite automatizar tareas y procesos repetitivos en la línea de comandos. Bash es altamente configurable y personalizable, y se puede ajustar para adaptarse a las necesidades y preferencias de cada usuario. Debido a su versatilidad, Bash es una herramienta fundamental para la administración de sistemas Unix/Linux y la automatización de tareas en la línea de comandos.

<h3 «>Instalación de Bash Shell

Bash es una de las shells más comunes en sistemas Unix y Linux y suele estar instalado de forma predeterminada en la mayoría de estas plataformas. Sin embargo, si por alguna razón no se tiene instalado Bash o se requiere una versión más reciente, se puede instalar utilizando el gestor de paquetes de la distribución de Linux que se esté utilizando.

En distribuciones basadas en Debian, como Ubuntu, se puede instalar Bash utilizando el siguiente comando en la terminal:

				
					sudo apt-get install bash

				
			

En distribuciones basadas en Red Hat, como Fedora o CentOS, se puede instalar Bash utilizando el siguiente comando:

				
					sudo dnf install bash

				
			

Después de la instalación, se puede acceder a Bash abriendo una terminal y escribiendo el comando bash. También es posible establecer Bash como shell predeterminado utilizando el comando «chsh».

Ejercicio Nº 1 : Hola Mundo!!

Desarrolla un programa en Bash que imprima el mensaje «Hola Mundo» en la consola utilizando el comando echo. El programa debe ser guardado en un archivo con extensión .sh y debe tener permisos de ejecución. Cuando se ejecute el programa, debería imprimirse el mensaje «Hola Mundo» en la consola.

<< Resolución >>

Trabajando con archivos y directorios

En Bash Shell, trabajar con archivos y directorios es una tarea común y esencial para la gestión del sistema y la automatización de tareas. Bash proporciona una serie de comandos y herramientas que permiten manipular archivos y directorios desde la línea de comandos, lo que permite realizar tareas de forma rápida y eficiente.

Comandos básicos de archivos y directorios

A continuación, se describen algunos de los comandos más utilizados para trabajar con archivos y directorios en Bash:

  • ls: lista el contenido de un directorio.
  • cd: cambia el directorio actual a otro directorio.
  • mkdir: crea un nuevo directorio.
  • touch: crea un nuevo archivo vacío o actualiza la fecha de modificación de un archivo existente.
  • cp: copia un archivo o directorio de un lugar a otro.
  • mv: mueve un archivo o directorio de un lugar a otro o cambia el nombre de un archivo.
  • rm: elimina un archivo o directorio.
  • chmod: cambia los permisos de acceso de un archivo o directorio.
  • chown: cambia el propietario de un archivo o directorio.

Estos son solo algunos de los comandos disponibles en Bash para trabajar con archivos y directorios. Cada uno de ellos tiene una gran cantidad de opciones y configuraciones que se pueden utilizar para realizar tareas específicas. En los siguientes artículos podéis encontrar más información sobre los comandos en linux:

  • Comandos más utilizados en Linux –> Link

 

Trabajando con variables y constantes

Variables:

En Bash scripting, las variables son elementos que se utilizan para almacenar valores y datos. Las variables en Bash son dinámicas, lo que significa que pueden cambiar su valor en cualquier momento durante la ejecución del script.

Las variables son esenciales para cualquier lenguaje de programación, y en Bash se utilizan para almacenar valores temporales o permanentes que se utilizan en el programa. En Bash, las variables pueden contener números, cadenas de texto y otros tipos de datos. Las variables en Bash son case-sensitive, lo que significa que las variables «nombre» y «Nombre» se consideran diferentes.

Las variables se pueden definir de dos maneras en Bash. La primera es mediante la asignación directa de un valor a una variable, y la segunda es mediante la captura de una entrada del usuario. En Bash, las variables se definen utilizando la sintaxis «nombre_variable=valor».

Para asignar un valor a una variable en Bash, se utiliza el siguiente formato:

				
					nombre_variable=valor

				
			

Por ejemplo, para asignar el valor 10 a una variable llamada «numero», se utilizaría la siguiente línea de código:

				
					numero=10
				
			

Para imprimir el valor de una variable en Bash, se utiliza el símbolo de dólar ($) antes del nombre de la variable. Por ejemplo, para imprimir el valor de la variable «numero», se utiliza la siguiente línea de código:

				
					echo $numero

				
			

Esto nos reportará el número 10 por pantalla.

 

Ejemplo:

				
					#!/bin/bash

nombre="Firox"
edad=80

echo "Hola mi nombre es $nombre y mi edad es $edad"
				
			

El script comienza con la especificación del intérprete de comandos que se utilizará para ejecutar el script. En este caso, se utiliza el intérprete de Bash mediante la línea #!/bin/bash.

Luego, se define una variable llamada «nombre» y se le asigna el valor «Firox» mediante la expresión nombre="Firox". De manera similar, se define otra variable llamada «edad» y se le asigna el valor 80 mediante la expresión edad=80.

Constantes:

Las constantes son valores fijos que no pueden ser modificados durante la ejecución del script. A diferencia de las variables, las constantes no pueden cambiar su valor después de haber sido definidas.

En Bash, no existe una forma nativa de definir constantes, pero se pueden emular mediante la convención de que las variables cuyo nombre esté completamente en mayúsculas se consideran constantes y no deben ser modificadas.

Por ejemplo, en el siguiente fragmento de código, se define una constante PI con un valor de 3.1416:

Finalmente, se utiliza el comando echo para imprimir una cadena de texto en la salida estándar. La cadena incluye las variables «nombre» y «edad» utilizando la sintaxis de expansión de variable $nombre y $edad. Por lo tanto, la salida del script será «Hola mi nombre es Firox y mi edad es 80».

				
					#!/bin/bash
PI=3.1416
echo "El valor de PI es: $PI"

				
			

Es importante destacar que esta convención no impide que la variable sea modificada, simplemente es una convención que se utiliza para indicar que el valor no debe ser cambiado en el script.

Tipos de valores que podemos asignar a una variable en Bash Scripting:

En Bash Scripting, se pueden asignar diferentes tipos de valores a una variable, incluyendo:

  1. Cadenas de texto: Un conjunto de caracteres alfanuméricos que se pueden asignar a una variable utilizando comillas dobles o simples.
  2. Números enteros: Se pueden asignar a una variable utilizando solo números enteros.
  3. Números en coma flotante: Se pueden asignar a una variable utilizando números decimales o notación científica.
  4. Arreglos: Una lista de valores separados por espacios, comas o puntos y comas, que se pueden asignar a una variable.
  5. Booleanos: Verdadero (true) o Falso (false), que se pueden asignar a una variable utilizando los valores 1 y 0 respectivamente.

Es importante tener en cuenta que en Bash Scripting, las variables no tienen tipos definidos, por lo que el tipo de valor que se le asigna depende completamente del valor que se le asigne a la variable.

 

Redirección y tuberías de comandos

Las redirecciones y las tuberías de comandos son características poderosas de Linux que permiten manejar y manipular la entrada, salida y errores de los comandos que se ejecutan en la línea de comandos.

Las redirecciones son una forma de cambiar la entrada o salida de un comando. Esto se hace utilizando los caracteres «<» (redirigir entrada) y «>» (redirigir salida) seguidos del nombre del archivo donde se va a redirigir la entrada o salida. Por ejemplo, para redirigir la salida de un comando a un archivo de texto, se puede usar:

				
					comando > archivo.txt

				
			

De esta forma, el resultado del comando se escribirá en el archivo «archivo.txt» en lugar de mostrarse en la pantalla.

Las tuberías de comandos son una forma de conectar varios comandos para que la salida de uno se convierta en la entrada del siguiente. Esto se hace utilizando el carácter «|» (pipe). Por ejemplo, para mostrar los archivos en el directorio actual ordenados por tamaño, se puede usar:

				
					ls -l | sort -k 5 -n

				
			

En este ejemplo, la salida del comando «ls -l» se pasa al comando «sort -k 5 -n», que ordena los archivos por su tamaño.

Aquí podéis encontrar más información acerca de las redirecciones en Linux y cómo concatenar comandos:

 

Tipos de Redirecciones:

Algunos ejemplos de redirecciones comunes son:

  • > : Redirige la salida estándar de un comando a un archivo o reemplaza el contenido de un archivo existente.
  • >> : Redirige la salida estándar de un comando a un archivo o agrega el contenido al final de un archivo existente.
  • < : Redirige la entrada estándar de un comando desde un archivo.
  • 2> : Redirige la salida de error estándar de un comando a un archivo o reemplaza el contenido de un archivo existente.
  • 2>> : Redirige la salida de error estándar de un comando a un archivo o agrega el contenido al final de un archivo existente.

 

Tuberías más comunes:

Algunos ejemplos de tuberías comunes son:

  • | : Envía la salida de un comando como entrada a otro comando.
  • grep : Filtra la salida de un comando según un patrón específico.
  • sort : Ordena la salida de un comando según un criterio específico.
  • uniq : Filtra la salida de un comando eliminando las líneas duplicadas.
  • wc : Cuenta el número de líneas, palabras y caracteres en la salida de un comando.

 

La combinación de redirecciones y tuberías puede ser muy útil para procesar datos y automatizar tareas en la línea de comandos. Recordar que podéis encontrar los comandos explicados en el siguiente link: 

 

Ejercicio Nº 2: Variables

Crea un script de Bash que declare y asigne valores a las siguientes variables:

  • «nombre» con valor «Firox».
  • «nombres» con valores «Juan», «Pedro», «Manolo» y «Paco» .
  • «edad» con valor «80».
  • «PI» con valor «3,14».
  • «ruta» con el valor de la ruta actual del directorio.
  • «primerArgumento» con el valor del primer argumento que se pase al script.
  • «segundoArgumento» con el valor del segundo argumento que se pase al script.
  • «shell» con el valor de la variable de entorno SHELL.

Luego, imprime en la consola el valor de cada variable utilizando el comando «echo».

<< Resolución >>