{"id":3914,"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-08-19T17:52:22","modified_gmt":"2024-08-19T20:52:22","slug":"mastering-bash-i-our-first-script","status":"publish","type":"post","link":"https:\/\/www.gauchocode.com\/pt-br\/mastering-bash-i-our-first-script\/","title":{"rendered":"Por que todo programador deve aprender Bash e como come\u00e7ar"},"content":{"rendered":"\n<h2 class=\"gb-headline gb-headline-69fb5fd8 gb-headline-text\">Introdu\u00e7\u00e3o<\/h2>\n\n\n\n<p>H\u00e1 algumas semanas, embarcamos em <a href=\"https:\/\/www.gauchocode.com\/why-learn-bash\/\">um artigo discutindo a import\u00e2ncia de aprender Bash para programadores,<\/a> visando criar uma s\u00e9rie de artigos que permitiriam aos programadores mergulhar no Bash enquanto seguem as melhores pr\u00e1ticas. Reconhecemos a quantidade significativa de informa\u00e7\u00f5es dispon\u00edveis que muitas vezes negligenciam essas diretrizes essenciais.<br><br>Este artigo, especificamente voltado para programadores, tem como objetivo orient\u00e1-los na cria\u00e7\u00e3o de seus scripts iniciais, enfatizando a import\u00e2ncia de seguir as melhores pr\u00e1ticas.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-9b653faf gb-headline-text\">Primeiros Passos no Bash<\/h2>\n\n\n\n<p>Se voc\u00ea \u00e9 um programador procurando automatizar tarefas ou gerenciar configura\u00e7\u00f5es do sistema, aprender a escrever scripts Bash pode ser uma ferramenta incrivelmente poderosa. Bash \u00e9 um shell de linha de comando e uma linguagem de script usada no Linux, macOS e outros sistemas operacionais baseados em Unix. Neste post do blog, forneceremos um guia passo a passo sobre como escrever seu primeiro script Bash, juntamente com um exemplo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Passo 0: Escolha seu Editor de Texto<\/h3>\n\n\n\n<p>Antes de come\u00e7armos a escrever nosso primeiro script Bash, precisamos escolher um editor de texto. Voc\u00ea pode usar qualquer editor de texto com o qual se sinta confort\u00e1vel, mas recomendamos usar o Visual Studio Code.<br>Para obter informa\u00e7\u00f5es detalhadas sobre as extens\u00f5es recomendadas e suas configura\u00e7\u00f5es correspondentes para o Visual Studio Code, consulte o seguinte artigo: <a href=\"https:\/\/www.gauchocode.com\/pt-br\/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\">Passo 1: Criar nosso primeiro Script<\/h3>\n\n\n\n<p>N\u00e3o h\u00e1 melhor maneira de aprender do que praticando, ent\u00e3o o primeiro passo ser\u00e1 criar a base do nosso script Bash e, em seguida, testar e executar o c\u00f3digo nele conforme necess\u00e1rio.<\/p>\n\n\n\n<h4 class=\"gb-headline gb-headline-19a30955 gb-headline-text\">Abra seu editor de texto e crie um novo arquivo<\/h4>\n\n\n\n<p>Chamaremos este arquivo de \u201cmyscript.sh\u201c. A extens\u00e3o \u201c.sh\u201d indica que este \u00e9 um script Bash<\/p>\n\n\n\n<h4 class=\"gb-headline gb-headline-126e0bbb gb-headline-text\">Adicione o Shebang<\/h4>\n\n\n\n<p>A primeira linha de um script Bash deve sempre come\u00e7ar com um shebang. O shebang diz ao sistema qual int\u00e9rprete usar para executar o script. Adicione a seguinte linha no in\u00edcio do seu script:<\/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\">Imprima algo<\/h4>\n\n\n\n<p>Agora que temos nosso arquivo configurado, \u00e9 hora de escrever um script simples que cumprimente o usu\u00e1rio:<\/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\">Passo 2: Salvar e Executar Nosso Script<\/h3>\n\n\n\n<p>Salve o script e torne-o execut\u00e1vel executando o seguinte comando no seu 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 torna o arquivo execut\u00e1vel. Agora, podemos executar nosso script digitando o seguinte 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>Voc\u00ea deve ver a seguinte sa\u00edda no seu 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\">Passo 3: Aprender os conceitos b\u00e1sicos de Bash com boas pr\u00e1ticas<\/h3>\n\n\n\n<p>Neste passo, explicarei alguns conceitos de script Bash com boas pr\u00e1ticas, que voc\u00ea pode testar no script rec\u00e9m-criado para avaliar a sa\u00edda.<\/p>\n\n\n\n<h4 class=\"gb-headline gb-headline-38594c2e gb-headline-text\">Vari\u00e1veis <\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>As vari\u00e1veis devem sempre ser referenciadas na forma ${var}, em vez de $var<\/li>\n\n\n\n<li>As vari\u00e1veis devem sempre ser citadas, especialmente se seu valor pode conter um espa\u00e7o em branco ou caractere separador: &#8220;${var}&#8221;<\/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\">Capitaliza\u00e7\u00e3o<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vari\u00e1veis de ambiente (exportadas): ${ALL_CAPS}<\/li>\n\n\n\n<li>Vari\u00e1veis locais: ${lower_case}<\/li>\n<\/ul>\n\n\n\n<h5 class=\"gb-headline gb-headline-9af12792 gb-headline-text\">Prefira vari\u00e1veis locais dentro de fun\u00e7\u00f5es em vez de vari\u00e1veis globais<\/h5>\n\n\n\n<p style=\"font-size:16px\">Se precisar de vari\u00e1veis globais, torne-as somente leitura:<\/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\">Arrays<\/h4>\n\n\n\n<p>Aqui est\u00e3o algumas boas pr\u00e1ticas para trabalhar com arrays no 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\">Sempre use a nota\u00e7\u00e3o de par\u00e2metro longo quando dispon\u00edvel<\/h4>\n\n\n\n<p style=\"font-size:16px\">A nota\u00e7\u00e3o longa torna o script mais leg\u00edvel, especialmente para comandos menos conhecidos\/usados para os quais voc\u00ea n\u00e3o lembra todas as op\u00e7\u00f5es.<\/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\">Tornando seus scripts mais robustos e resistentes a erros com exit e return<\/h4>\n\n\n\n<h5 class=\"gb-headline gb-headline-ec6cca88 gb-headline-text\">exit<\/h5>\n\n\n\n<p>Use c\u00f3digos de sa\u00edda ($?) para indicar o sucesso ou falha do script. Convencionalmente, um c\u00f3digo de sa\u00edda 0 indica sucesso, enquanto qualquer valor diferente de zero representa um erro ou falha.<br><br>Forne\u00e7a mensagens de erro significativas ao sair devido a um erro, tornando mais f\u00e1cil diagnosticar e solucionar 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\">return<\/h5>\n\n\n\n<p>Use a declara\u00e7\u00e3o return para indicar o sucesso ou falha de uma fun\u00e7\u00e3o retornando um c\u00f3digo de sa\u00edda. Semelhante ao comando exit, convencionalmente, um c\u00f3digo de sa\u00edda 0 representa sucesso, enquanto valores diferentes de zero representam erros.<\/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>Exemplo: Script de Backup Automatizado<\/strong><\/h3>\n\n\n\n<p>Agora que voc\u00ea aprendeu o b\u00e1sico, vamos criar um exemplo mais pr\u00e1tico. Neste exemplo, criaremos um script que faz backup autom\u00e1tico de um diret\u00f3rio.<\/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 define o diret\u00f3rio de backup, cria-o se ele n\u00e3o existir, arquiva o diret\u00f3rio e salva-o no diret\u00f3rio de backup. Em seguida, imprime uma mensagem de sucesso.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-320b930e gb-headline-text\">Encerrando<\/h2>\n\n\n\n<p>A escrita de scripts Bash \u00e9 uma habilidade valiosa que pode ajud\u00e1-lo a automatizar tarefas e gerenciar configura\u00e7\u00f5es do sistema. Com os passos e exemplo fornecidos neste post do blog, voc\u00ea deve ser capaz de escrever seu primeiro script Bash e come\u00e7ar a explorar o poder da escrita de scripts Bash.&#8221;<\/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":3179,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-3914","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-33"],"acf":[],"custom_fields":{"_pingme":["1"],"_encloseme":["1"],"_thumbnail_id":["3179"],"_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":["144"],"rank_math_seo_score":["14"],"rank_math_primary_category":["52"],"_dp_original":["414"],"_wp_old_date":["2023-04-03","2023-04-05"],"rank_math_description":["If you're a programmer looking to automate tasks or manage system configurations, then learning how to write Bash scripts can be an incredibly powerful tool."],"rank_math_robots":["a:1:{i:0;s:5:\"index\";}"],"rank_math_focus_keyword":["Bash Script: Best Practices"],"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":["1726513404:4"],"_last_translation_edit_mode":["native-editor"],"_edit_last":["4"],"_wpml_media_duplicate":["1"],"_wpml_media_featured":["1"]},"_links":{"self":[{"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/posts\/3914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/comments?post=3914"}],"version-history":[{"count":0,"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/posts\/3914\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/media\/3179"}],"wp:attachment":[{"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/media?parent=3914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/categories?post=3914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gauchocode.com\/pt-br\/wp-json\/wp\/v2\/tags?post=3914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}