{"id":174242,"date":"2026-01-28T16:18:15","date_gmt":"2026-01-28T15:18:15","guid":{"rendered":"https:\/\/liora.io\/es\/?p=174242"},"modified":"2026-08-24T10:35:57","modified_gmt":"2026-08-24T09:35:57","slug":"programacion-de-scripts-bash","status":"publish","type":"post","link":"https:\/\/liora.io\/es\/programacion-de-scripts-bash","title":{"rendered":"Programaci\u00f3n de scripts Bash: Todo lo que necesitas saber"},"content":{"rendered":"\n<p><strong>El scripting ofrece a los usuarios la posibilidad de simplificar y racionalizar sus operaciones diarias. Los scripts Bash (acr\u00f3nimo de Bourne Again Shell) son elementos muy poderosos y \u00fatiles para el desarrollo.<\/strong><\/p>\n\n\n<p>Se trata de un int\u00e9rprete de comandos para los sistemas Unix y <a href=\"https:\/\/liora.io\/es\/linux-es-el-sistema-operativo-preferido-de-los-desarrolladores\">Linux<\/a>. Dise\u00f1ado por <strong>Brian Fox<\/strong> en 1989 para el proyecto <strong>GNU<\/strong>, fue desarrollado para reemplazar el <strong>Bourne Shell<\/strong> original, aportando mejoras significativas en t\u00e9rminos de funcionalidades y compatibilidad.<\/p>\n\n\n<p>La importancia del Bash en la administraci\u00f3n de sistemas y el desarrollo de software no puede ser subestimada. Permite automatizar tareas repetitivas, gestionar sistemas a gran escala y facilitar el desarrollo de scripts complejos para diversas aplicaciones.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"cuales-son-los-fundamentos-del-bash-scripting\">\u00bfCu\u00e1les son los fundamentos del Bash Scripting?<\/h2>\n\n\n<p>El Bash scripting es una habilidad esencial para cualquiera que trabaje con sistemas Unix o Linux.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"que-es-bash-y-bang-introduccion-al-shebang\">\u00bfQu\u00e9 es Bash y Bang: introducci\u00f3n al shebang?<\/h3>\n\n\n<p>El primer elemento clave de cualquier script Bash es la l\u00ednea <strong>shebang<\/strong>. Indica al sistema qu\u00e9 int\u00e9rprete usar para ejecutar el script.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash<\/code><\/pre>\n\n\n<p>El <strong>#!<\/strong> es conocido como shebang, y <strong>\/bin\/bash<\/strong> especifica la ruta hacia el int\u00e9rprete Bash. Esta l\u00ednea es crucial ya que asegura que el script ser\u00e1 interpretado por Bash, incluso si hay otros shells presentes en el sistema.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"como-dar-el-primer-paso-hello-world\">\u00bfC\u00f3mo dar el primer paso: Hello World?<\/h3>\n\n\n<p>Con tu editor de texto favorito, crea un archivo llamado <strong>hello.sh<\/strong>, y a\u00f1ade el siguiente contenido y guarda:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\necho \"Hello World!\"<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"como-hacer-un-script-ejecutable\">\u00bfC\u00f3mo hacer un script ejecutable?<\/h3>\n\n\n<p>Por defecto, un archivo de texto no tiene los permisos necesarios para ser ejecutado como un programa. Para hacer tu script ejecutable, es necesario usar el siguiente comando para modificar los permisos:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>chmod +x hello.sh<\/code><\/pre>\n\n\n<p>Luego es posible verificar los permisos con el siguiente comando:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>ls -l hello.sh<\/code><\/pre>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/en\/courses\/data-ai\/data-engineer\">Entendiendo Bash Scripting<\/a><\/div><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"como-ejecutar-un-script\">\u00bfC\u00f3mo ejecutar un script?<\/h3>\n\n\n<p>Para ejecutar el script, varias posibilidades se nos ofrecen:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Ruta relativa:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>.\/hello.sh<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Uso del shell Bash:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>bash hello.sh<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>A trav\u00e9s del shell sh, pero puede causar comportamientos diferentes si el script utiliza funcionalidades espec\u00edficas de Bash:<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>sh hello.sh<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"cuales-son-los-comandos-basicos\">\u00bfCu\u00e1les son los comandos b\u00e1sicos?<\/h2>\n\n\n<p>El Bash scripting se basa en el uso eficaz de una variedad de comandos para realizar tareas simples y complejas. A continuaci\u00f3n, algunos comandos utilizados com\u00fanmente para navegar y manipular el sistema de archivos:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Listar los archivos y carpetas del directorio actual<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>ls<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Cambiar de directorio<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>cd \/path\/to\/directory<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Mostrar el directorio actual<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>pwd<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Crear un archivo vac\u00edo, o actualizar la marca de tiempo de un archivo existente<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>touch newfile.txt<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Eliminar archivos o carpetas<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>rm file.txt<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"como-combinar-comandos\">\u00bfC\u00f3mo combinar comandos?<\/h2>\n\n\n<p>Los scripts Bash se vuelven poderosos cuando combinas comandos para realizar tareas m\u00e1s complejas. A continuaci\u00f3n, algunos ejemplos:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Uso del \u201c<strong>;<\/strong>\u201d para ejecutar varios comandos en una secuencia<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>cd \/path\/to\/directory; ls; pwd<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Redirecci\u00f3n de salida: Usa <strong>&gt;<\/strong> para redirigir la salida de un comando a un archivo, o <strong>&gt;&gt;<\/strong> para a\u00f1adir a un archivo existente<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>echo \"Hello, World!\" &gt; hello.txt\necho \"Hello again!\" &gt;&gt; hello.txt<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Uso del Pipe ( | ) para dirigir la salida de un comando como entrada de otro comando<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>ls -l | grep \".txt\"<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"como-gestionar-variables-y-sustitucion\">\u00bfC\u00f3mo gestionar variables y sustituci\u00f3n?<\/h2>\n\n\n<ul class=\"wp-block-list\">\n<li>Declaraci\u00f3n de una variable y uso de esta \u00faltima con\u00a0<strong>$<\/strong><\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>NAME=\u201dAlice\u201d\necho \u201cHello, $NAME!\u201d<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Uso de la sustituci\u00f3n para usar la salida de un comando como variable<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>DATE=$(date)\necho \"Today's date is $DATE\"<\/code><\/pre>\n\n\n<p><em>Nota que este ejemplo es a menudo utilizado en la creaci\u00f3n de logs.<\/em><\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"como-gestionar-rutas\">\u00bfC\u00f3mo gestionar rutas?<\/h2>\n\n\n<p>Entender y gestionar las rutas de archivos es esencial para navegar eficazmente en el sistema de archivos y escribir scripts robustos.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"cual-es-la-diferencia-entre-ruta-absoluta-vs-relativa\">\u00bfCu\u00e1l es la diferencia entre ruta absoluta vs relativa?<\/h3>\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table>\n<colgroup>\n<col\/>\n<col\/>\n<col\/>\n<col\/>\n<\/colgroup>\n<thead>\n<tr>\n<th><img alt=\"Image\" decoding=\"async\" height=\"50\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/07\/image1-2.png\" width=\"50\"\/><\/th>\n<th>Absoluta<\/th>\n<th><img alt=\"Image\" decoding=\"async\" height=\"50\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/2024\/07\/image2-3.png\" width=\"50\"\/><\/th>\n<th>Relativa<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td colspan=\"2\">Especifica la ubicaci\u00f3n completa de un archivo o directorio desde la ra\u00edz del sistema de archivos.<\/td>\n<td colspan=\"2\">Indica la ubicaci\u00f3n de un archivo o directorio en relaci\u00f3n con el directorio actual.<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">Ejemplo: \/home\/user\/documents\/report.txt<\/td>\n<td colspan=\"2\">Ejemplo: documents\/report.txt<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/en\/courses\/data-ai\/etl-developer\">Entender todo sobre Bash Scripting<\/a><\/div><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"que-comandos-estan-asociados-a-la-gestion-de-rutas\">\u00bfQu\u00e9 comandos est\u00e1n asociados a la gesti\u00f3n de rutas?<\/h3>\n\n\n<p>Para localizar archivos y comandos, hay varias herramientas disponibles en Bash:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Encontrar la ubicaci\u00f3n de un ejecutable<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>which bash<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>Ubicaci\u00f3n de los binarios, fuentes y documentaciones asociadas a un comando<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>whereis bash<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li>B\u00fasqueda de archivos y carpetas<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>find \/home\/user -name \"report.txt\"<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"cuales-son-las-variables-de-entorno-mas-comunes\">\u00bfCu\u00e1les son las variables de entorno m\u00e1s comunes?<\/h3>\n\n\n<p>Las variables de entorno son pares clave-valor que afectan el comportamiento de los procesos del sistema. A continuaci\u00f3n, las m\u00e1s comunes:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>$PATH<\/strong> : contiene una lista de directorios donde el sistema busca los ejecutables. Para modificarlo, usa el siguiente comando<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>export PATH=$PATH:\/new\/directory\/path<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>$HOME<\/strong> : Representa la carpeta personal del usuario<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>echo $HOME\ncd $HOME<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>$PWD<\/strong> : Indica la carpeta de trabajo actual<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>echo $PWD<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>$USER<\/strong> : Contiene el nombre del usuario actual<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>echo $USER<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"como-se-maneja-el-control-de-flujo-y-logica\">\u00bfC\u00f3mo se maneja el control de flujo y l\u00f3gica?<\/h2>\n\n\n<p>El control de flujo y la l\u00f3gica son elementos esenciales del Bash scripting, permitiendo escribir scripts din\u00e1micos y adaptables.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"como-funcionan-las-instrucciones-condicionales\">\u00bfC\u00f3mo funcionan las instrucciones condicionales?<\/h3>\n\n\n<p>Permiten ejecutar c\u00f3digo en funci\u00f3n de ciertas condiciones. A continuaci\u00f3n, un ejemplo que ilustra el uso de <strong>if\u2026elif\u2026else.<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash \necho \"Ingrese un n\u00famero: \" \nread number \nif [ $number -gt 10 ]; then \n    echo \"El n\u00famero es mayor que 10.\" \nelif [ $number -eq 10 ]; then \n    echo \"El n\u00famero es igual a 10.\" \nelse \n    echo \"El n\u00famero es menor que 10.\" \nfi<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"como-funcionan-los-bucles\">\u00bfC\u00f3mo funcionan los bucles?<\/h3>\n\n\n<p>Los bucles se utilizan para repetir comandos varias veces.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>for<\/strong><\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>for i in 1 2 3 4 5; do\n    echo \"Contador : $i\"\ndone<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>while<\/strong><\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>count=1\nwhile [ $count -le 5 ]; do\n    echo \"Contador : $count\"\n    ((count++))\ndone<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>until<\/strong><\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>count=1\nuntil [ $count -gt 5 ]; do\n    echo \"Contador : $count\"\n    ((count++))\ndone<\/code><\/pre>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/en\/courses\/data-ai\/analytics-engineer\">Formaci\u00f3n en Bash Scripting<\/a><\/div><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"cuales-son-algunos-scripts-utiles-y-buenas-practicas\">\u00bfCu\u00e1les son algunos scripts \u00fatiles y buenas pr\u00e1cticas?<\/h2>\n\n\n<h3 class=\"wp-block-heading\" id=\"ejemplos-de-scripts\">\u00bfEjemplos de scripts?<\/h3>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Script de backup<\/strong> : copia de archivos de una fuente a un destino<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# Este script realiza una copia de seguridad de los archivos\nsrc=\"\/home\/user\/documents\"\ndest=\"\/backup\/documents\"\nif [ ! -d $dest ]; then\n    mkdir -p $dest\nfi\nfor file in $src\/*; do\n    if [ -f $file ]; then\n        cp $file $dest\n        echo \"Copiado $file vers $dest\"\n    fi\ndone<\/code><\/pre>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Limpieza <\/strong>: eliminaci\u00f3n de elementos de una carpeta temporal<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\ndir=\"\/home\/user\/temp\"\necho \"Limpiando el directorio $dir\"\nfor file in $dir\/*; do\n    if [ -f $file ]; then\n        rm $file\n        echo \"Eliminado $file\"\n    fi\ndone<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"cuales-son-algunas-buenas-practicas\">\u00bfCu\u00e1les son algunas buenas pr\u00e1cticas?<\/h2>\n\n\n<p><strong><strong>1. Comenta <\/strong>: esto hace que los scripts sean m\u00e1s legibles y comprensibles<\/strong><\/p>\n\n\n<p><strong>2. Nombra <\/strong>tus variables de manera descriptiva. Evita nombres de variables como $var1, $var2 o $tmpvar.<\/p>\n\n\n<p><strong>3. Gestiona los errores<\/strong> : usa condiciones para verificar el \u00e9xito y capturar los errores de manera apropiada<\/p>\n\n\n<p><strong>4. Modula tu c\u00f3digo<\/strong> mediante el uso de funciones, especialmente si el script realiza varias operaciones, por ejemplo:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>backup_files() {\n    # C\u00f3digo para realizar la copia de seguridad\n}<\/code><\/pre>\n\n\n<p><strong>5. Depura para identificar los errores<\/strong>. A continuaci\u00f3n, comandos \u00fatiles para esto:<\/p>\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nset -x # Activa el modo traza, mostrando cada comando y su resultado\n# C\u00f3digo del script\n#!\/bin\/bash\nset -e # Detiene el script en caso de error\n# C\u00f3digo del script\necho \"D\u00e9but du script\" # Usar echo en puntos estrat\u00e9gicos del script para verificar las salidas y seguir el flujo de ejecuci\u00f3n<\/code><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id=\"para-concluir\">Para concluir<\/h2>\n\n\n<p>El Bash scripting es una herramienta poderosa <strong>para automatizar y simplificar las tareas en los sistemas Unix y Linux<\/strong>. Dominando los fundamentos, los comandos b\u00e1sicos, la gesti\u00f3n de rutas, el control de flujo y las buenas pr\u00e1cticas, puedes <strong>escribir scripts robustos y eficaces<\/strong> para mejorar tu productividad diaria.<\/p>\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/en\/courses\/data-ai\/dataops-engineer\">Iniciar un curso de formaci\u00f3n sobre Bash Scripting<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>El scripting ofrece a los usuarios la posibilidad de simplificar y racionalizar sus operaciones diarias. Los scripts Bash (acr\u00f3nimo de Bourne Again Shell) son elementos muy poderosos y \u00fatiles para el desarrollo.<\/p>\n","protected":false},"author":85,"featured_media":174244,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2439],"class_list":["post-174242","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/174242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/comments?post=174242"}],"version-history":[{"count":5,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/174242\/revisions"}],"predecessor-version":[{"id":185396,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/174242\/revisions\/185396"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/media\/174244"}],"wp:attachment":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/media?parent=174242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/categories?post=174242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}