Seu navegador não oferece leitura em voz alta. Você pode ler o guia normalmente.
A força do terminal Linux está em combinar comandos pequenos: um produz texto, outro filtra, outro conta. As bancas cobram o efeito de linhas como sort arquivo | uniq -c ou a diferença entre > e >>. Os comandos abaixo foram executados em um terminal de teste com arquivos criados para o exemplo, e as saídas são as obtidas.
Arquivos de teste
nomes.txt (7 linhas): ana, bruno, carla, ana, diego, bruno, ana, uma por linha.
log.txt (5 linhas):
erro: disco
aviso: cpu
erro: rede
ok
erro: disco
Três fluxos padrão
Todo programa tem três canais:
| Canal | Número | Padrão |
|---|---|---|
| stdin (entrada) | 0 | teclado |
| stdout (saída) | 1 | tela |
| stderr (erros) | 2 | tela |
Redirecionamento
>envia a saída a um arquivo, substituindo o conteúdo.>>acrescenta ao final.<lê a entrada de um arquivo.2>redireciona os erros.
Teste: echo um > r.txt e depois echo dois > r.txt deixou o arquivo com uma única linha, “dois”. Com echo tres >> r.txt, o arquivo ficou com “dois” e “tres”. Moral: > apaga o que havia, e é o erro mais comum de quem quer anexar.
Para erros: ls naoexiste 2> err.txt guardou no arquivo a mensagem de erro (arquivo ou diretório inexistente) em vez de mostrá-la. A forma comando > /dev/null 2>&1 descarta saída e erros; /dev/null é um “buraco negro” do sistema.
Pipe (|)
O pipe liga a saída de um comando à entrada do seguinte, sem arquivo intermediário. Os comandos do pipe rodam em conjunto, passando dados em fluxo.
Filtros que você precisa conhecer
| Comando | Função |
|---|---|
cat |
exibe o conteúdo |
head -n 2 / tail -n 2 |
primeiras / últimas 2 linhas |
sort |
ordena linhas |
uniq |
remove linhas consecutivas repetidas |
uniq -c |
idem, e conta as repetições |
wc -l / wc -w |
conta linhas / palavras |
grep |
filtra linhas que casam com um padrão |
cut -d: -f2 |
corta campos por delimitador |
Resultados do teste:
head -n 2 nomes.txtmostrou ana e bruno;tail -n 2 nomes.txtmostrou bruno e ana.wc -l nomes.txtdeu 7 linhas;wc -w log.txtdeu 9 palavras.echo "a:b:c" | cut -d: -f2devolveu b.
Contando repetições: a pegadinha do sort
sort nomes.txt | uniq -c produziu:
| Contagem | Nome |
|---|---|
| 3 | ana |
| 2 | bruno |
| 1 | carla |
| 1 | diego |
Já uniq nomes.txt | wc -l, sem ordenar antes, deu 7, pois não há duas linhas seguidas iguais, e o uniq só remove repetições adjacentes. Por isso quase sempre se usa sort antes de uniq. Para ordenar do mais frequente ao menos frequente, acrescenta-se sort -rn (-n numérico, -r inverso): sort nomes.txt | uniq -c | sort -rn colocou ana (3) em primeiro e bruno (2) em segundo; a ordem entre contagens empatadas não é garantida por esse comando.
grep
grep padrão arquivo imprime as linhas que contêm o padrão.
Comando em log.txt |
Resultado |
|---|---|
grep erro log.txt |
as três linhas com erro (disco, rede, disco) |
grep -c erro log.txt |
3 (contagem de linhas) |
grep -v erro log.txt |
as linhas sem erro: “aviso: cpu” e “ok” |
grep -n DISCO log.txt |
nada (diferencia maiúsculas) |
grep -in DISCO log.txt |
linhas 1 e 5, com números (-i ignora caixa, -n numera) |
O grep aceita expressões regulares básicas: ^erro casa linhas que começam com “erro”, e disco$ as que terminam em “disco”. Opções frequentes: -r (recursivo em diretórios), -l (só nomes dos arquivos que casam), -w (palavra inteira).
find
find percorre diretórios procurando por nome, tipo, tamanho ou data. Diretório de teste: docs/a.txt, docs/sub/b.txt, docs/sub/c.log.
find docs -name "*.txt"achoudocs/a.txtedocs/sub/b.txt, e deixou de forac.log. As aspas evitam que o interpretador expanda o curinga antes dofind.find docs -type dlistou os diretórios:docsedocs/sub. Tipofé arquivo comum.
Outras opções: -size, -mtime (data de modificação) e -exec para rodar um comando em cada resultado. Diferença cobrada: find percorre a árvore de diretórios; grep busca dentro do conteúdo dos arquivos; locate consulta um índice pronto, mais rápido, porém desatualizável.
Encadeamento com && e ||
a && b: executabsó seateve sucesso (código de saída 0).a || b: executabsó seafalhou.
No teste, true && echo A imprimiu A; false && echo B não imprimiu nada; false || echo C imprimiu C. Em Linux, código 0 significa sucesso; qualquer outro, falha. Um ls de arquivo inexistente devolveu o código 2.
Leitura passo a passo de um pipeline
grep erro log.txt | sort | uniq -c:
- O
grepentrega as três linhas de erro. - O
sortas ordena: as duas “erro: disco” ficam juntas. - O
uniq -cconta: 2 de “erro: disco” e 1 de “erro: rede”.
Erros comuns
- Usar
>achando que acrescenta. - Aplicar
uniqsemsort. - Esquecer que o
grepdiferencia maiúsculas sem-i. - Confundir
find(arquivos pelo nome e atributos) comgrep(conteúdo). - Achar que
|e>são equivalentes: o pipe liga comandos; o>grava em arquivo.
Fontes e atualização
Não há norma oficial brasileira sobre comandos Linux; o conteúdo segue o padrão POSIX e a prática dos utilitários GNU, e as saídas foram obtidas executando os comandos em um terminal de teste. Opções e saídas variam entre versões e distribuições: confira o edital e a documentação (man) do sistema adotado.
Próximos passos
- Estude permissões em chmod, umask e bits especiais.
- Compare com Windows e Linux comparados.
- Revise o conceito em sistema operacional: funções, arquivos, pastas e atalhos.