{"id":3915,"date":"2023-05-05T08:54:20","date_gmt":"2023-05-05T11:54:20","guid":{"rendered":"https:\/\/www.gauchocode.com\/mastering-bash-i-our-first-script\/"},"modified":"2024-10-08T10:32:17","modified_gmt":"2024-10-08T13:32:17","slug":"mastering-bash-i-our-first-script","status":"publish","type":"post","link":"https:\/\/www.gauchocode.com\/es\/mastering-bash-i-our-first-script\/","title":{"rendered":"Bash: Mejores pr\u00e1cticas y ejemplos"},"content":{"rendered":"\n<h2 class=\"gb-headline gb-headline-69fb5fd8 gb-headline-text\">Introducci\u00f3n<\/h2>\n\n\n\n<p>Hace unas semanas, nos embarcamos en un art\u00edculo que discute la importancia de aprender Bash para los programadores, con el objetivo de crear una serie de art\u00edculos que permitan a los programadores profundizar en Bash mientras se adhieren a las mejores pr\u00e1cticas. Reconocimos la cantidad significativa de informaci\u00f3n disponible que a menudo descuida estas pautas esenciales.<br><br>Este art\u00edculo, dise\u00f1ado espec\u00edficamente para programadores, tiene como objetivo guiarlos en la creaci\u00f3n de sus scripts iniciales, al tiempo que enfatiza la importancia de seguir las mejores pr\u00e1cticas.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-9b653faf gb-headline-text\">Primeros pasos en Bash<\/h2>\n\n\n\n<p>Si eres un programador que busca automatizar tareas o administrar configuraciones del sistema, aprender a escribir scripts de Bash puede ser una herramienta incre\u00edblemente poderosa. Bash es un shell de l\u00ednea de comandos y lenguaje de scripting que se utiliza en Linux, macOS y otros sistemas operativos basados en Unix. En esta entrada del blog, te proporcionaremos una gu\u00eda paso a paso sobre c\u00f3mo escribir tu primer script de Bash, junto con un ejemplo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 0: Elige tu editor de texto<\/h3>\n\n\n\n<p>Antes de sumergirnos en la escritura de nuestro primer script de Bash, debemos elegir un editor de texto. Puede usar cualquier editor de texto con el que se sienta c\u00f3modo, pero se recomienda usar Visual Studio Code.<br>Para obtener informaci\u00f3n detallada sobre las extensiones recomendadas y su configuraci\u00f3n correspondiente para Visual Studio Code, consulte el siguiente art\u00edculo: <a href=\"https:\/\/www.gauchocode.com\/es\/why-learn-bash\/\" target=\"_blank\" rel=\"noreferrer noopener\"><mark style=\"background-color:var(--primary-cyan)\" class=\"has-inline-color has-contrast-color\">gauchocode.com\/why-learn-bash<\/mark><\/a><\/p>\n\n\n\n<h3 class=\"gb-headline gb-headline-b88dc52d gb-headline-text\">Paso 1: Crear nuestro primer script<\/h3>\n\n\n\n<p>No hay mejor manera de aprender que practicando, por lo que el primer paso ser\u00e1 crear la base de nuestro script Bash y luego probar y ejecutar gradualmente el c\u00f3digo en \u00e9l seg\u00fan sea necesario.<\/p>\n\n\n\n<h4 class=\"gb-headline gb-headline-19a30955 gb-headline-text\">Abre tu editor de texto y crea un nuevo archivo<\/h4>\n\n\n\n<p>Llamaremos a este archivo \u00abmyscript.sh\u00bb. La extensi\u00f3n \u00ab.sh\u00bb indica que se trata de un script de Bash.<\/p>\n\n\n\n<h4 class=\"gb-headline gb-headline-126e0bbb gb-headline-text\">A\u00f1ade Shebang<\/h4>\n\n\n\n<p>La primera l\u00ednea de un script de Bash siempre debe comenzar con un shebang. El shebang le dice al sistema qu\u00e9 int\u00e9rprete usar para ejecutar el script. Agregue la siguiente l\u00ednea al principio de la secuencia de comandos:<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code>!\/bin\/bash<\/code><\/pre>\n\n\n\n<h4 class=\"gb-headline gb-headline-1b51e463 gb-headline-text\">Imprimir algo<\/h4>\n\n\n\n<p>Ahora que tenemos nuestro archivo configurado, es hora de escribir un script simple que salude al usuario:<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code>!\/bin\/bash\n\necho \"Welcome to my first Bash script!\"<\/code><\/pre>\n\n\n\n<h3 class=\"gb-headline gb-headline-8f157687 gb-headline-text\">Paso 2: Guardar y ejecutar nuestro script<\/h3>\n\n\n\n<p>Guarde el script y h\u00e1galo ejecutable ejecutando el siguiente comando en su terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code>chmod +x myscript.sh<\/code><\/pre>\n\n\n\n<p>Este comando hace que el archivo sea ejecutable. Ahora, podemos ejecutar nuestro script escribiendo el siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code>.\/myscript.sh<\/code><\/pre>\n\n\n\n<p>Deber\u00edas ver el siguiente resultado en tu terminal:<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code>Welcome to my first Bash script!<\/code><\/pre>\n\n\n\n<h3 class=\"gb-headline gb-headline-18f8dfe4 gb-headline-text\">Paso 3: Aprende los conceptos b\u00e1sicos de Bash con buenas pr\u00e1cticas<\/h3>\n\n\n\n<p>En este paso, explicar\u00e9 algunos conceptos de scripting de Bash con buenas pr\u00e1cticas, que puede probar en el script creado recientemente para evaluar la salida.<\/p>\n\n\n\n<h4 class=\"gb-headline gb-headline-38594c2e gb-headline-text\">Variables <\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Las variables siempre deben mencionarse en la forma en lugar de ${var}$var<\/li>\n\n\n\n<li>Las variables siempre deben ir entre comillas, especialmente si su valor puede contener un espacio en blanco o un car\u00e1cter separador: \u00ab${var}<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code># Correct\ngreeting=\"Hello, World!\"\necho \"${greeting}\"  # Output: Hello, World!\n\n# Incorrect\ngreeting=Hello, World!\necho $greeting <\/code><\/pre>\n\n\n\n<h5 class=\"gb-headline gb-headline-43f1fc76 gb-headline-text\">Capitalizaci\u00f3n<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Variables de entorno (exportadas): ${ALL_CAPS}<\/li>\n\n\n\n<li>Variables locales: ${lower_case}<\/li>\n<\/ul>\n\n\n\n<h5 class=\"gb-headline gb-headline-9af12792 gb-headline-text\">Preferir variables locales dentro de funciones sobre variables globales<\/h5>\n\n\n\n<p style=\"font-size:16px\">Si necesita variables globales, h\u00e1galas de solo lectura:<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code>readonly GLOBAL_VAR=\"Initial value\"\n\nGLOBAL_VAR=\"New value\"  # This will generate an error<\/code><\/pre>\n\n\n\n<h4 class=\"gb-headline gb-headline-089c1389 gb-headline-text\">Matrices<\/h4>\n\n\n\n<p>Estas son algunas buenas pr\u00e1cticas para trabajar con matrices en Bash:<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code># Explicitly declare arrays to enhance code clarity and prevent unexpected behavior\nmy_array=()\n\n# Initialize an array \nmy_array=(1 2 3)  \n\n# Retrieve third element \n${my_array&#91;2]}\n\n# Retrieve all elements \n${my_array&#91;@]} \n\n# Retrieve array indices \n${!my_array&#91;@]} \n\n# Calculate array size \n${#my_array&#91;@]} \n\n# Overwrite 1st element \nmy_array&#91;0]=3\n\n# Append value(s) \nmy_array+=(4) \n\n# Save ls output as an array of files \nmy_array=( $(ls) )\n\n# Retrieve n elements starting at index s\n${my_array&#91;@]:s:n}\n\n# Remove an element from an array\nunset my_array&#91;2]\n\n# Iterate over array elements\nfor element in \"${my_array&#91;@]}\"; do\n    echo \"${element}\"\ndone\n\n# Check if an array is empty\nif &#91;&#91; ${#my_array&#91;@]} -eq 0 ]]; then\n    echo \"Array is empty\"\nfi<\/code><\/pre>\n\n\n\n<h4 class=\"gb-headline gb-headline-141af1c8 gb-headline-text\">Utilice siempre la notaci\u00f3n de par\u00e1metros larga cuando est\u00e9 disponible<\/h4>\n\n\n\n<p style=\"font-size:16px\">La notaci\u00f3n larga hace que el script sea m\u00e1s legible, especialmente para comandos menos conocidos\/utilizados para los que no recuerda todas las opciones.<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code># Good:\nrm --recursive --force -- \"${dir}\"\n\n# Avoid:\nrm -rf -- \"${dir}\"<\/code><\/pre>\n\n\n\n<h4 class=\"gb-headline gb-headline-b06cd06f gb-headline-text\">Hacer que sus scripts sean m\u00e1s robustos y resistentes a errores con salida y retorno<\/h4>\n\n\n\n<h5 class=\"gb-headline gb-headline-ec6cca88 gb-headline-text\">salida<\/h5>\n\n\n\n<p>Utilice c\u00f3digos de salida ($?) para indicar el \u00e9xito o el fracaso del script. Convencionalmente, un c\u00f3digo de salida de 0 indica \u00e9xito, mientras que cualquier valor distinto de cero representa un error o error.<br><br>Proporcione mensajes de error significativos al salir debido a un error, lo que facilita el diagn\u00f3stico y la soluci\u00f3n de problemas.<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code># Exiting with an error message\nif &#91;&#91; ! -f \"${file}\" ]]; then\n    echo \"Error: File not found!\"\n    exit 1\nfi<\/code><\/pre>\n\n\n\n<h5 class=\"gb-headline gb-headline-81950791 gb-headline-text\">devoluci\u00f3n<\/h5>\n\n\n\n<p>Utilice la instrucci\u00f3n return para indicar el \u00e9xito o el fracaso de una funci\u00f3n devolviendo un c\u00f3digo de salida. De forma similar al comando exit, convencionalmente, un c\u00f3digo de salida de 0 representa \u00e9xito, mientras que los valores distintos de cero representan errores.<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code># Using return within a function and an if statement\nfunction my_function() {\n    if &#91;&#91; \"${var}\" = \"value\" ]]; then\n        echo \"Condition met. Returning...\"\n        return 0\n    fi\n    # Rest of the function code\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplo: Script de copia de seguridad automatizado<\/strong><\/h3>\n\n\n\n<p>Ahora que ya conoces los conceptos b\u00e1sicos, vamos a crear un ejemplo m\u00e1s pr\u00e1ctico. En este ejemplo, crearemos un script que haga una copia de seguridad autom\u00e1tica de un directorio.<\/p>\n\n\n\n<pre class=\"wp-block-code language-bash line-numbers\"><code>!\/bin\/bash\n\n# Set the backup directory\nBACKUP_DIR=\"\/home\/user\/backup\"\n\n# Create the backup directory if it doesn't exist\nif &#91;&#91; ! -d \"${BACKUP_DIR}\" ]]; then\n   mkdir \"${BACKUP_DIR}\"\nfi\n\n# Archive the directory and save it to the backup directory\ntar --create --gzip --verbose --file \"${BACKUP_DIR}\/mybackup.tar.gz\" \/home\/user\/mydirectory\n\n# Print a success message\necho \"Backup complete!\"<\/code><\/pre>\n\n\n\n<p>Este script establece el directorio de copia de seguridad, lo crea si no existe, archiva el directorio y lo guarda en el directorio de copia de seguridad. A continuaci\u00f3n, imprime un mensaje de \u00e9xito.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-320b930e gb-headline-text\">Terminando<\/h2>\n\n\n\n<p>El scripting de Bash es una habilidad valiosa que puede ayudarlo a automatizar tareas y administrar configuraciones del sistema. Con los pasos y el ejemplo proporcionados en esta entrada del blog, deber\u00eda ser capaz de escribir su primer script de Bash y empezar a explorar el poder del scripting de Bash.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sed porttitor lectus nibh. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Sed porttitor lectus nibh.<\/p>\n","protected":false},"author":2,"featured_media":3180,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[36],"tags":[],"class_list":["post-3915","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-33"],"acf":[],"custom_fields":{"_pingme":["1"],"_encloseme":["1"],"_thumbnail_id":["3180"],"_generateblocks_dynamic_css_version":["1.9.1","1.9.1","1.9.1","1.9.1","1.9.1"],"rank_math_internal_links_processed":["1","1"],"rank_math_analytic_object_id":["143"],"rank_math_seo_score":["16"],"_dp_original":["414"],"_wp_old_date":["2023-04-03","2023-04-05"],"rank_math_description":["Este art\u00edculo, dise\u00f1ado espec\u00edficamente para programadores, tiene como objetivo guiarlos en la creaci\u00f3n de sus scripts iniciales, al tiempo que enfatiza la importancia de seguir las mejores pr\u00e1cticas."],"rank_math_robots":["a:1:{i:0;s:5:\"index\";}"],"rank_math_focus_keyword":["bash mejores pr\u00e1cticas"],"liked_by":["a:1:{i:0;s:13:\"181.4.175.122\";}"],"_wpml_word_count":["{\"total\":810,\"to_translate\":{\"pt-br\":810,\"es\":810}}"],"_wpml_location_migration_done":["1"],"_edit_lock":["1728396058:1"],"_last_translation_edit_mode":["native-editor"],"_edit_last":["1"],"_wpml_media_duplicate":["1"],"_wpml_media_featured":["1"],"rank_math_title":["Bash: Mejores pr\u00e1cticas y ejemplos %sep% %sitename%"]},"_links":{"self":[{"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/posts\/3915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/comments?post=3915"}],"version-history":[{"count":0,"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/posts\/3915\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/media\/3180"}],"wp:attachment":[{"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/media?parent=3915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/categories?post=3915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gauchocode.com\/es\/wp-json\/wp\/v2\/tags?post=3915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}