101 · LPIC-1 (parte 1)
103.4 Usando fluxos, pipes e redirecionamentos
TópicoT13ObjetivoUsar fluxos de entrada e saída, pipes e redirecionamentos para gerir dados entre comandosPeso2PáginasLPIC-1 (101) - Version 5.0
Resumo Conciso
Fluxos de entrada e saída padrão
- Entrada padrão (stdin) — Código 0, lê dados via teclado
- Saída padrão (stdout) — Código 1, exibe dados na tela
- Erro padrão (stderr) — Código 2, exibe mensagens de erro
Símbolos de redirecionamento
| Símbolo | Descrição |
|---|---|
> | Redireciona stdout (sobrescreve) |
>> | Redireciona stdout (acrescenta) |
< | Redireciona stdin de ficheiro |
2> | Redireciona stderr para ficheiro |
&> | Redireciona stdout E stderr para ficheiro |
| | Pipe: conecta stdout de um comando ao stdin do próximo |
ls > list.txt # Redireciona saída para ficheiroecho "texto" >> ficheiro.txt # Acrescenta ao finalgrep "termo" ficheiro.txt | less # Pipe para paginaçãols 2> erros.txt # Redireciona apenas errosls &> saida.txt # Redireciona tudocat < ficheiro.txt # Lê de ficheiro para stdinUsando pipes e tee
ls -l | wc -l # Conta ficheiros no directórioecho "ola" | tee ficheiro.txt | cat # Exibe E salva em ficheirols -l | tee saida.txt | wc -l # Salva e continua o pipeExpressões de comando e processos
ps aux | grep bash # Lista processos com bashcat /proc/cpuinfo | head -16 # Informações do processadorfree -h | grep Mem # Uso de memóriadf -h | sort # Uso de disco ordenadoComandos de expressão
cal # Calendário do mês atualcal 01 2003 # Calendário de janeiro de 2003cal 02 1990 # Calendário de fevereiro de 1990Controle de processos (mencionado)
<ctrl> c # Interrupção (SIGINT)<ctrl> d # Término de entrada<ctrl> z # Suspensão (SIGTSTP)<ctrl> s # Congela o terminal<ctrl> q # Descongela o terminalExercícios Guiados
Exercício Guiado 1 — Listar utilizadores com shell Bash
Enunciado: Quantos utilizadores em /etc/passwd usam Bash como shell?
Solução:
$ cat /etc/passwd | grep "bash" | wc -lExercício Guiado 2 — Número de processadores
Enunciado: Quantos processadores (núcleos lógicos) o sistema tem?
Solução:
$ cat /proc/cpuinfo | grep "processor" | wc -lExercício Guiado 3 — Contar linhas, palavras e caracteres
Enunciado: Use wc para contar linhas, palavras e caracteres de um ficheiro de texto.
Solução:
$ cat mytextfile.txt | wcExercício Guiado 4 — Criar hash para verificação futura
Enunciado: Gere um checksum SHA512 de /etc/passwd e guarde-o para verificação posterior.
Solução:
$ sha512sum /etc/passwd > /tmp/passwd.hashExercício Guiado 5 — Identificar a última atualização do sistema
Enunciado: Descubra a data e hora da última execução do apt.
Solução:
$ cat /var/log/apt/history.log | grep "Start-Date" | head -1Exercício Guiado 6 — Diferenciar processadores de núcleos
Enunciado: Compare o número de processadores lógicos com o número de núcleos físicos e sockets.
Solução:
$ cat /proc/cpuinfo | grep "processor" | wc -l$ cat /proc/cpuinfo | grep "core id" | sort -u | wc -l$ cat /proc/cpuinfo | grep "physical id" | sort -u | wc -lExercícios Exploratórios
- Redirecionar a lista de ficheiros para ficheiro:
$ $ ls > mylistofdocuments.txt- Verificar ficheiros diferentes entre dois directórios:
$ $ diff <(ls dir1/) <(ls dir2/)- Criar ficheiro com tamanho específico:
$ $ dd if=/dev/zero of=/tmp/mybigfile count=200000- Listar utilizadores com UID menor que 1000:
$ $ cat /etc/passwd | sort -t: -n -k3 | awk -F: '$3 < 1000 {print $1}'- Verificar mudanças no ficheiro de senhas:
$ $ sha512sum /etc/passwd > /tmp/passwd.hash # Após mudanças:$ $ sha512sum -c /tmp/passwd.hash- Gerar ficheiro de teste com tamanho específico:
$ $ dd if=/dev/zero of=/tmp/ficheiro count=30000- Calendário de fevereiro de 1990:
$ $ cal 02 1990