Saltar para o conteúdo
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ímboloDescriçã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
bash
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 stdin

Usando pipes e tee

bash
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 pipe

Expressões de comando e processos

bash
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 ordenado

Comandos de expressão

bash
cal                              # Calendário do mês atualcal 01 2003                      # Calendário de janeiro de 2003cal 02 1990                      # Calendário de fevereiro de 1990

Controle de processos (mencionado)

bash
<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 terminal

Exercícios Guiados

Exercício Guiado 1 — Listar utilizadores com shell Bash

Enunciado: Quantos utilizadores em /etc/passwd usam Bash como shell?

Solução:

bash
$ cat /etc/passwd | grep "bash" | wc -l

Exercício Guiado 2 — Número de processadores

Enunciado: Quantos processadores (núcleos lógicos) o sistema tem?

Solução:

bash
$ cat /proc/cpuinfo | grep "processor" | wc -l

Exercício Guiado 3 — Contar linhas, palavras e caracteres

Enunciado: Use wc para contar linhas, palavras e caracteres de um ficheiro de texto.

Solução:

bash
$ cat mytextfile.txt | wc

Exercí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:

bash
$ sha512sum /etc/passwd > /tmp/passwd.hash

Exercício Guiado 5 — Identificar a última atualização do sistema

Enunciado: Descubra a data e hora da última execução do apt.

Solução:

bash
$ cat /var/log/apt/history.log | grep "Start-Date" | head -1

Exercí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:

bash
$ 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 -l

Exercícios Exploratórios

  1. Redirecionar a lista de ficheiros para ficheiro:
bash
$  $ ls > mylistofdocuments.txt
  1. Verificar ficheiros diferentes entre dois directórios:
bash
$  $ diff <(ls dir1/) <(ls dir2/)
  1. Criar ficheiro com tamanho específico:
bash
$  $ dd if=/dev/zero of=/tmp/mybigfile count=200000
  1. Listar utilizadores com UID menor que 1000:
bash
$  $ cat /etc/passwd | sort -t: -n -k3 | awk -F: '$3 < 1000 {print $1}'
  1. Verificar mudanças no ficheiro de senhas:
bash
$  $ sha512sum /etc/passwd > /tmp/passwd.hash   # Após mudanças:$  $ sha512sum -c /tmp/passwd.hash
  1. Gerar ficheiro de teste com tamanho específico:
bash
$  $ dd if=/dev/zero of=/tmp/ficheiro count=30000
  1. Calendário de fevereiro de 1990:
bash
$  $ cal 02 1990