Shell Script 1 - O Básico
Você já leu o Papo de Botequim por Julio Cezar Neves? Se não, eu sugiro que leia, pois é um excelente material sobre Shell Script. Lá ele explica, dentre outras coisas, a diferença entre Bash e Shell. Bom, aqui eu vou mostrar apenas os comandos que eu considero mais relevantes, mas não deixe de ler o Papo de Botequim.
O que é Bash e Shell Script?
Bash é o interpretador e Shell Script é a linguagem.
A caixa de ferramentas do shelleiro
O Canivete Suíço do Shell (Bash) do Aurélio Marinho Jargas é o guia de referência de quem quer aprender Shell Script. E por isso vou reproduzir aqui os comandos que ele menciona em “A caixa de ferramentas do shelleiro”.
Comando | Função | Opções úteis |
---|---|---|
cat | Mostra arquivo | -n, -s |
cut | Extrai campo | -d -f, -c |
date | Mostra data | -d, +’…’ |
diff | Compara arquivos | -u, -Nr, -i, -w |
echo | Mostra texto | -e, -n |
find | Encontra arquivos | -name, -iname, -type f, -exec, -or |
fmt | Formata parágrafo | -w, -u |
grep | Encontra texto | -i, -v, -r, -qs, -n, -l, -w -x, -A -B -C |
head | Mostra início | -n, -c |
od | Mostra caracteres | -a, -c, -o, -x |
paste | Paraleliza arquivos | -d, -s |
printf | Mostra texto | nenhuma |
rev | Inverte texto | nenhuma |
pwd | Mostra o caminho do diretório atual | |
sed | Edita texto | -n, -f, s/isso/aquilo/, p, d, q, N |
seq | Conta números | -s, -f |
sort | Ordena texto | -n, -f, -r, -k -t, -o |
tac | Inverte arquivo | nenhuma |
tail | Mostra final | -n, -c, -f |
tee | Arquiva fluxo | -a |
tr | Transforma texto | -d, -s, A-Z a-z |
top | Mostra os processos dinamicamente | |
uniq | Remove duplicatas | -i, -d, -u |
wc | Conta letras | -c, -w, -l, -L |
which | Mostra a localização de um arquivo executável | |
who | Mostra que está conectado | |
whoami | Mostra o nome do usuário logado | |
xargs | Gerencia argumentos | -n, -i |
O Básico
Antes de sair explorando “A caixa de ferramentas do shelleiro”, vamos começar do começo.
Para abrir o terminal você pode pressionar Ctrl+Alt+T.
O $
é o prompt do comando, ou seja, a partir deste símbolo você pode digitar seus comandos.
Se você já leu alterando o prompt terminal você deve ter visto este prompt:
onde
E ~
é a pasta principal, a pasta home
do usuário atual.
Esta é a configuração padrão do prompt de comando do terminal, mas se quiser, você pode mudar digitando, por exemplo.
Para todos os comandos digite
--help
.
Arquivos e Diretórios
Mostra o nome e caminho do diretório atual.
Criando pastas
O argumento -p
cria os diretórios pais à medida que forem necessários sem gerar erro. Ou seja, para criar subpasta primeiro ele cria novapasta.
Removendo pastas
Remove o diretório se estiver vazio.
Criando arquivos vazios
Obs: Note que neste exemplo devemos criar a pasta templates antes.
Listando os arquivos
-l
esta opção usa o formato de listagem longa.
-a
mostra arquivos ocultos, que começam com .
No exemplo, .env
é um arquivo oculto.
Experimente
Visualizando os arquivos numa árvore
Excluindo arquivos e pastas
Depois de ler os comandos a seguir você vai entender o que o maluco fez quando excluiu todos os dados da empresa.
Cuidado: os comandos a seguir são extremamente perigosos!!!
Cuidado: O primeiro comando exclui todos os arquivos da pasta atual. O segundo exclui todos recursivamente e com force ativado, ou seja, exclui arquivos não-vazios sem perguntar.
Experimente
Este comando anula o efeito excluir tudo.
Leia mais em cuidado com comandos perigosos do shell.
Copiando arquivos
Movendo arquivos
Move ou renomeia arquivos e diretórios. Semelhante ao cp
, mas o arquivo de origem é apagado.
Criando links
O comando a seguir cria um link simbólico, o que comumente chamamos de atalho.
Digitando cd img
entramos na pasta ~/Imagens/
através do atalho.
Redirecionamento de Comandos
>
Redireciona a saída de um comando para outro arquivo. Se o arquivo existir será sobrescrito.
>>
Redireciona a saída, mas acrescentando os dados ao final do arquivo, sem sobrescrever o arquivo.
<
Redireciona a entrada.
Conta o número de linhas não vazias do arquivo.
Experimente:
Depois
Depois
Pipes
Pipes ( |
barra vertical) - permite que um programa utilize como entrada a saída de outro programa.
Faz com que o comando sort
receba como entrada a saída produzida pelo comando ls
. Neste exemplo o sort
ordena na ordem reversa.
Grava no arquivo lista.txt
o número de linhas do arquivo passwd
.
Grep
Pesquisando em um arquivo específico.
Resultado:
Pesquisando em todos os arquivos do tipo txt
.
Pesquisando na saída de um comando
echo
Experimente
Tabulação
Quebra de linha
Leia mais em Shell Script 2 - Estruturas de Controle