View
212
Download
0
Embed Size (px)
bash-programming-how-to-translateDocumentation
Release 0.0.1
Ciro S. Costa
October 18, 2016
Contents
1 Este Documento 3
2 Guia 52.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Obtendo a ltima verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.3 Usos deste documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Scripts muito simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2.1 O tradicional script de Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.2 Um script de backup muito simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Tudo sobre redirecionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.1 Teoria e rpida referncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.2 Exemplo: stdout para arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.3 Exemplo: stderr 2 arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3.4 Exemplo: stdout 2 stderr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4.1 O que eles so e porque vai us-los . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4.2 Pipe simples com sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4.3 Exemplo: uma alternativa para ls -l *.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5 Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5.1 Exemplo: Hello World! usando variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5.2 Exemplo: Um script de backup muito simples (um pouco melhor) . . . . . . . . . . . . . . 82.5.3 Variveis Locais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6 Condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.6.1 Teoria Pura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.6.2 Exemplo: Condicional bsica if .. then . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.6.3 Exemplo: Condicional bsica if .. then ... else . . . . . . . . . . . . . . . . . . . . . . . . . 102.6.4 Exemplo: Condicionais com Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7 Loops, For, While e Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.7.1 Por Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.7.2 for parecido com C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.7.3 Exemplo While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.7.4 Exemplo Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.8.1 Exemplo de Funo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.8.2 Exemplo de funo com parmetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.9 User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.9.1 Usando select para criar menus simples . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
i
2.9.2 Usando a linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.10 Misc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.10.1 10.1 Reading user input with read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.10.2 10.2 Arithmetic evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.10.3 10.3 Finding bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.10.4 10.4 Getting the return value of a program . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.10.5 10.5 Capturing a commands output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.10.6 10.6 Multiple source files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.11 Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.11.1 11.1 String comparison operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.11.2 11.2 String comparison examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.11.3 11.3 Arithmetic operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.11.4 11.4 Arithmetic relational operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.11.5 11.5 Useful commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.12 Mais Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.13 Quando algo d errado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.14 Sobre o documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 ndices e Tabelas 19
ii
bash-programming-how-to-translate Documentation, Release 0.0.1
O documento original redigido por Mike G pode ser encontrado na seo de HOW-TOs da The Linux DocumentationProject.
Este no um guia avanado, mas bastante simplificado e direto quanto a conceitos e funes bsicas. No apreteno deste abordar a fundo os tpicos, o que pode ser percebido inclusive pelo tamanho destes.
De grande valia este documento pode ser para aqueles que desejem iniciar algo rpido para possuir alguma base parafuturos estudos.
Para aprendizado posterior a este recomendo a leitura do Advanced Bash-Scripting Guide de Mendel Cooper.
Contents 1
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.htmlhttp://www.tldp.org/LDP/abs/html/
bash-programming-how-to-translate Documentation, Release 0.0.1
2 Contents
CHAPTER 1
Este Documento
Este documento busca primariamente ser uma fonte de futura referncia para o autor e, quem sabe, para a comunidade.Mais do que apenas traduzir, o autor espera que ao apresentar ao pblico geral um simples documento praticamentepuro de HTML numa forma mais iterativa/visualmente agradvel, incentivar (ou tentar no desistimular) um nmeromaior de pessoas.
3
bash-programming-how-to-translate Documentation, Release 0.0.1
4 Chapter 1. Este Documento
CHAPTER 2
Guia
2.1 Introduction
2.1.1 Obtendo a ltima verso
http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html
2.1.2 Requisitos
Familiaridade com linhas de comando GNU/Linux e tambm com conceitos bsicos de programao so desejveis.Ao passo que este no se trata de uma introduo programao, explica (ao ao menos tenta) muito conceitos bsicos.
2.1.3 Usos deste documento
Este documento tenta ser til para as seguinte situaes:
Voc possui alguma ideia sobre programao e deseja comear a programar alguns script para shell.
Voc possui uma vaga ideia sobre programao para shell e deseja alguma referncia.
Voc quer ver alguns scripts e comentrios para comear a escrever seus prprios.
Voc est migranto do DOS/Windows (ou j fez) e deseja fazer alguns batch process (execuo de uma sriede programas)
Voc um completo nerd e l tudo o que h de disponvel.
2.2 Scripts muito simples
Este COMO FAZER lhe dar algumas dicas sobre como programao por schell script fortemente baseada em exem-plos.
Nesta seo voc encontrar alguns pequenos scripts que com sorte lhe ajudaro a entender algumas tcnicas.
5
http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html
bash-programming-how-to-translate Documentation, Release 0.0.1
2.2.1 O tradicional script de Hello World
#!/bin/bashecho Hello World
O script possui apenas duas linhas. A primeira indica o sistema que o programa usa para rodar o arquivo.
A segunda linha a nica ao performada pelo script, que printa Hello World no terminal.
Se voc receber algo parecido com ./hello.sh: Command not found provavelmente a primeira linha est errada. Enviewhereis bash ou busque por buscando bash para ver como escrever esta linha.
2.2.2 Um script de backup muito simples
#!/bin/bashtar -cZf /var/my-backup.tgz /home/me/
Neste script, ao invs de printar a mensagem no terminal, criamos um arquivo tar-ball com o diretorio completo dousuario.
Isto no pretendido para ser utilizado. Um script mais til de backup ser apresentado mais frente neste documento.
2.3 Tudo sobre redirecionamento
2.3.1 Teoria e rpida referncia
Existem trs descritores de arquivo: stdin, stdout e stderror (sendo std = Standard = Padro).
Basicamente voc pode:
redirecionar stdout para um arquivo
redirecionar stderr para um arquivo
redirecionar stdout para um stderr
redirecionar stderr para uma stdout
redirecionar stderr e stdout para arquivo
redirecionar stderr e stdout ** para **stdout
redirecionar stderr e stdout para stderr