{"id":15208,"date":"2019-03-15T19:39:54","date_gmt":"2019-03-15T22:39:54","guid":{"rendered":"https:\/\/blog.hostinger.io\/br-tutoriais\/?p=15208"},"modified":"2021-09-03T16:57:09","modified_gmt":"2021-09-03T19:57:09","slug":"comandos-bash-linux","status":"publish","type":"post","link":"\/br\/tutoriais\/comandos-bash-linux","title":{"rendered":"Comandos Bash Linux &#8211; guia b\u00e1sico e exemplos de uso"},"content":{"rendered":"<p>O bash &eacute; uma das famosas ferramentas de script do Unix e ideal para usu&aacute;rios <a href=\"\/br\/tutoriais\/comandos-linux\"><strong>Linux<\/strong><\/a> e administradores de Sistema. Seu nome &eacute; uma abrevia&ccedil;&atilde;o de Bourne Again Shell. Neste tutorial voc&ecirc; vai aprender como utilizar alguns dos comandos bash Linux.<\/p><p>O <a href=\"https:\/\/pt.wikipedia.org\/wiki\/Unix\" target=\"_blank\" rel=\"noopener\"><strong>Unix<\/strong><\/a> possui 2 categoriais principais de shell.<\/p><ul>\n<li>Bourne-type shell<\/li>\n<li>C shell<\/li>\n<\/ul><p><b>Bourne shell<\/b> tamb&eacute;m &eacute; classificada como:<\/p><ul>\n<li>Korn shell (ksh)<\/li>\n<li>Bourne shell (sh)<\/li>\n<li>POSIX shell (sh)<\/li>\n<li>Bourne Again shell (bash)<\/li>\n<\/ul><p><b>C shell<\/b> &eacute; classificada como:<\/p><ul>\n<li>C shell (csh)<\/li>\n<li>TENEX (TOPS) C shell (tcsh)<\/li>\n<\/ul><p>Scripts bash s&atilde;o bastante poderosos e componentes importantes para desenvolvimento. Eles podem diminuir tarefas simples e repetitivas em uma &uacute;nica linha de fun&ccedil;&atilde;o. Diversos comandos longos podem ser consolidados em c&oacute;digos execut&aacute;veis &uacute;nicos.<\/p><p>O bash est&aacute; dispon&iacute;vel em praticamente todas as distribui&ccedil;&otilde;es Linux e n&atilde;o exige nenhuma instala&ccedil;&atilde;o a parte. A lista de shells dispon&iacute;veis pode ser verificada executando o seguinte comando:<\/p><pre>cat \/etc\/shells<\/pre><p>O resultado ser&aacute; algo como o exemplo abaixo:<\/p><pre>\/bin\/bash\r\n\/bin\/sh\r\n\/bin\/tcsh\r\n\/bin\/csh<\/pre><h2 id=\"h-por-que-usar-funcoes-bash-linux\"><b>Por Que Usar Fun&ccedil;&otilde;es Bash Linux?<\/b><\/h2><p>Fun&ccedil;&otilde;es bash podem:<\/p><ul>\n<li>Eliminar tarefas repetitivas.<\/li>\n<li>Economizar tempo.<\/li>\n<li>Oferece uma sequ&ecirc;ncia de atividades bem estruturadas, modulares e formatadas.<\/li>\n<li>Com fun&ccedil;&otilde;es, podemos oferecer valores din&acirc;micos a comandos usando comandos de argumento.<\/li>\n<li>Simplifica argumentos complexos em um &uacute;nico comando.<\/li>\n<li>Uma vez criado, pode ser executado in&uacute;meras vezes por qualquer pessoa.<\/li>\n<li>Linhas de l&oacute;gica podem ser criadas com fun&ccedil;&otilde;es bash.<\/li>\n<li>Os comandos bash podem ser executados na inicializa&ccedil;&atilde;o do servidor ou com a ajuda de tarefas cron.<\/li>\n<li>Os comandos podem passar por <i>debug<\/i>.<\/li>\n<li>Podem ter comandos shell interativos.<\/li>\n<\/ul><p>O bash &eacute;, definitivamente, uma &oacute;tima ferramenta para facilitar o seu fluxo de trabalho e melhorar seu projeto. Suas possibilidades de uso s&atilde;o praticamente infinitas, ent&atilde;o, neste tutorial iremos ensinar apenas o b&aacute;sico. Est&aacute; pronto para seu primeiro script?<\/p><h2 id=\"h-comecando-com-o-comando-bash\"><b>Come&ccedil;ando com o Comando Bash<\/b><\/h2><p>Antes de come&ccedil;ar, voc&ecirc; precisar&aacute; usar o SSH e se conectar com o servidor VPS.<\/p><p>Para come&ccedil;armos com op&ccedil;&otilde;es de comando b&aacute;sicas, voc&ecirc; pode conferir o manual do bash com o comando:<\/p><pre>man bash<\/pre><p>Em seguida, iremos criar o arquivo com extens&atilde;o <b>.sh<\/b>. Para isso, iremos utilizar o <b>Editor VIM<\/b>. Criamos um novo arquivo com o seguinte comando:<\/p><pre>vim sampleFunction.sh<\/pre><p>O arquivo <b>.sh<\/b> ser&aacute; aberto e iremos edit&aacute;-lo.<\/p><p>Cada script bash dever&aacute; come&ccedil;ar com os seguintes caracteres:<\/p><pre>#!\/bin\/bash<\/pre><p>O comando abaixo exibe o caminho do script bash.<\/p><pre>which bash<\/pre><p>O resultado ser&aacute; parecido com este:<\/p><pre>\/bin\/bash<\/pre><p>A sintaxe b&aacute;sica do bash &eacute;:<\/p><pre>function functionName {\r\nfirst command\r\nsecond command\r\n}<\/pre><p>Tamb&eacute;m pode ser escrito como:<\/p><pre>functionName (){\r\nfirst command\r\nsecond command\r\n}<\/pre><p>Em uma &uacute;nica linha fica escrito assim:<\/p><pre>functionName() { first command; second command; }\r\ncaca<\/pre><p>Um exemplo de tal fun&ccedil;&atilde;o est&aacute; demonstrado abaixo, quando criamos um diret&oacute;rio e mudamos o caminho para apontar para o novo diret&oacute;rio:<\/p><pre>sampleFunction () {\r\nmkdir -p $1\r\ncd $1\r\n}<\/pre><p><b>$1<\/b> significa a vari&aacute;vel sendo inserida na fun&ccedil;&atilde;o. O bash pode criar vari&aacute;veis din&acirc;micas dentro do comando. Para verificar esta fun&ccedil;&atilde;o, execute:<\/p><pre>sampleFunction myDir<\/pre><p>Neste caso, o myDir &eacute; o nome de um diret&oacute;rio v&aacute;lido a ser criado. Se voc&ecirc; verificar o diret&oacute;rio em que se encontra atualmente com o comando <b>pwd<\/b>, ir&aacute; notar que est&aacute; dentro do novo diret&oacute;rio <b>myDir<\/b>.<\/p><p>Da mesma maneira, qualquer comando comumente utilizado por ser adicionado como uma fun&ccedil;&atilde;o bash.<\/p><p>Lembre-se, quando tiver terminado de usar o editor VIM para editar seu arquivo <strong>.sh<\/strong>, voc&ecirc; pode salvar e fechar o arquivo apertando <b>ESC<\/b> para entrar em modo de comando e ent&atilde;o digitar <b>:wq<\/b> para salvar e sair.<\/p><h2 id=\"h-funcoes-bash-basicas\"><b>Fun&ccedil;&otilde;es Bash B&aacute;sicas<\/b><\/h2><p>Um dos exemplos b&aacute;sicos de uma fun&ccedil;&atilde;o bash est&aacute; destacado abaixo:<\/p><pre>#!\/bin\/bash\r\ntestfunction(){\r\necho \"My first function\"\r\n}\r\ntestfunction<\/pre><p>Se voc&ecirc; salvar este script em <b>testFunction.sh<\/b> e execut&aacute;-lo como <b>.\/testFunction.sh<\/b>, ent&atilde;o voc&ecirc; vai ver o resultado:<\/p><pre>My first function<\/pre><p>A fun&ccedil;&atilde;o Echo exibe o resultado no console. Se voc&ecirc; mudar a posi&ccedil;&atilde;o da defini&ccedil;&atilde;o de fun&ccedil;&atilde;o com o calling, ent&atilde;o o resultado vai ser um erro. O snippet abaixo ir&aacute; gerar um erro.<\/p><pre>#!\/bin\/bash\r\ntestfunction\r\ntestfunction(){\r\necho \"My first function\"\r\n}<\/pre><p>Ent&atilde;o, primeiro &eacute; preciso definir a fun&ccedil;&atilde;o e ent&atilde;o invoc&aacute;-la.<\/p><p>Fun&ccedil;&otilde;es bash podem aceitar qualquer n&uacute;mero de par&acirc;metros. O exemplo abaixo aceita dois par&acirc;metros:<\/p><pre>#!\/bin\/bash\r\ntestfunction(){\r\necho $1\r\necho $2\r\n}<\/pre><pre>testfunction \"Hello\" \"World\"<\/pre><p>Voc&ecirc; tamb&eacute;m pode utilizar a input interativa e performar fun&ccedil;&otilde;es bash, como mostrado abaixo:<\/p><pre>#!\/bin\/bash\r\naddition(){\r\nsum=$(($1+$2))\r\nreturn $sum\r\n}\r\nread -p \"Enter a number: \" int1\r\nread -p \"Enter a number: \" int2\r\nadd $int1 $int2\r\necho \"The result is : \" $?<\/pre><p>No exemplo acima, o valor da adi&ccedil;&atilde;o est&aacute; designado em uma soma de vari&aacute;veis, e isto &eacute; retornado da fun&ccedil;&atilde;o. Inputs interativas s&atilde;o usadas utilizando <b>read<\/b> para ambos os n&uacute;meros. Finalmente, o resultado &eacute; exibido utilizando <b>$? <\/b>que armazena o valor retornado de $sum da fun&ccedil;&atilde;o.<\/p><p>Fun&ccedil;&otilde;es bash sempre retornam um &uacute;nico valor.<\/p><p>Voc&ecirc; pode deixar coment&aacute;rios dentro do arquivo adicionando o s&iacute;mbolo <b>#<\/b> para deixar notas de ajuda.<\/p><p>Scripts bash suportam:<\/p><ul>\n<li>Loop <i>While<\/i><\/li>\n<li>Loop <i>For<\/i><\/li>\n<li>Instru&ccedil;&atilde;o <i>If<\/i><\/li>\n<li>L&oacute;gica <i>And<\/i><\/li>\n<li>L&oacute;gica <i>Or<\/i><\/li>\n<li>Instru&ccedil;&atilde;o <i>Else If<\/i><\/li>\n<li>Instru&ccedil;&atilde;o <i>Case<\/i><\/li>\n<\/ul><p>Abaixo &eacute; um exemplo curto do loop <i>While<\/i>.<\/p><pre>#!\/bin\/bash\r\nisvalid=true\r\ncount=1\r\nwhile [ $isvalid ]\r\ndo\r\necho $count\r\nif [ $count -eq 5 ];\r\nthen\r\nbreak\r\nfi\r\n((count++))\r\ndone<\/pre><p>O exemplo acima utiliza as instru&ccedil;&otilde;es <i>while<\/i> e <i>if<\/i>. Isso executa o loop <i>while<\/i> 5 vezes antes de sair depois de checar a instru&ccedil;&atilde;o condicional <i>if<\/i>.<\/p><p>O resultado ser&aacute;:<\/p><pre>1\r\n2\r\n3\r\n4\r\n5<\/pre><p>O loop <i>For<\/i> pode ser usado para incrementar assim como agravar os contadores. Um exemplo do loop <i>for<\/i> est&aacute; mostrado abaixo:<\/p><pre>#!\/bin\/bash\r\nfor (( count=10; count&gt;0; count-- ))\r\ndo\r\necho -n \"$count \"\r\ndone<\/pre><p>O resultado deste loop ser&aacute;:<\/p><pre>10 9 8 7 6 5 4 3 2 1<\/pre><p>No bash, os s&iacute;mbolos <b>&amp;&amp;<\/b> representam a l&oacute;gica <i>AND<\/i>, enquanto que <b>||<\/b> representam a l&oacute;gica <i>OR<\/i>.<\/p><p>Com instru&ccedil;&otilde;es <b><i>if<\/i><\/b>, tamb&eacute;m podemos definir <b><i>Else if<\/i><\/b>. Veja abaixo:<\/p><pre>#!\/bin\/bash\r\necho \"Enter a valid number\"\r\nread n\r\nif [ $n -eq 101 ];\r\nthen\r\necho \"This is first number\"\r\nelif [ $n -eq 510 ];\r\nthen\r\necho \" This is second number \"\r\nelif [ $n -eq 999 ];\r\nthen\r\necho \" This is third number \"\r\nelse\r\necho \"No numbers over here\"\r\nfi<\/pre><p>Este mesmo exemplo tamb&eacute;m pode ser escrito com a instru&ccedil;&atilde;o <i>case<\/i>:<\/p><pre>#!\/bin\/bash\r\necho \" Enter a valid number\"\r\nread n\r\ncase $n in\r\n101)\r\nEcho \" This is the first number \" ;;\r\n510)\r\necho \" This is the second number \" ;;\r\n999)\r\necho \" This is the third number \" ;;\r\n*)\r\necho \" No numbers over here \" ;;\r\nesac<\/pre><p>Em instru&ccedil;&otilde;es <i>case<\/i>, <b>;;<\/b> significa o t&eacute;rmino do <i>case<\/i>.<\/p><h2 id=\"h-resumo\"><b>Resumo<\/b><\/h2><p>Isto completa nossa revis&atilde;o dos comandos bash b&aacute;sicos. O bash &eacute; uma ferramenta extremamente poderosa e f&aacute;cil de ser aprendida. Deste ponto voc&ecirc; pode mergulhar fundo na cria&ccedil;&atilde;o de mais exemplos e se divertir explorando o potencial m&aacute;ximo dos comandos bash Linux!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O bash &eacute; uma das famosas ferramentas de script do Unix e ideal para usu&aacute;rios Linux e administradores de Sistema. Seu nome &eacute; uma abrevia&ccedil;&atilde;o de Bourne Again Shell. Neste tutorial voc&ecirc; vai aprender como utilizar alguns dos comandos bash Linux.O Unix possui 2 categoriais principais de shell. Bourne-type shell C shell Bourne shell tamb&eacute;m [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/br\/tutoriais\/comandos-bash-linux\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":78,"featured_media":15209,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"Bash Linux - Guia B\u00e1sico de Comandos e Exemplos de Uso","rank_math_description":"Aprenda o que \u00e9 e alguns exemplos de comandos bash Linux. Explore o potencial m\u00e1ximo de seu projeto com esta ferramenta incr\u00edvel!","rank_math_focus_keyword":"bash linux","footnotes":""},"categories":[4915],"tags":[6403,6402,6401],"class_list":["post-15208","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps","tag-bash-functions","tag-bash-linux","tag-comandos-bash"],"hreflangs":[{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/comandos-bash-linux","default":1},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/comandos-bash-linux","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/15208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/comments?post=15208"}],"version-history":[{"count":8,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/15208\/revisions"}],"predecessor-version":[{"id":25242,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/15208\/revisions\/25242"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/media\/15209"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/media?parent=15208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/categories?post=15208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/tags?post=15208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}