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.
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.
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:~$
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.
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.
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.
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.
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».
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.
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.
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:
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
.
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.
En Bash Scripting, se pueden asignar diferentes tipos de valores a una variable, incluyendo:
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.
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:
Algunos ejemplos de redirecciones comunes son:
Algunos ejemplos de tuberías comunes son:
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:
Crea un script de Bash que declare y asigne valores a las siguientes variables:
Luego, imprime en la consola el valor de cada variable utilizando el comando «echo».