===== Nível Básico =====
=== 1. Exibição de Arquivos de Texto ===
* **cat** - Exibe o conteúdo de arquivos de texto.
- Exemplo de uso: cat arquivo.txt
- Descrição: Exibe todo o conteúdo de ''arquivo.txt'' no terminal.
* **head** - Exibe as primeiras linhas de um arquivo.
- Exemplo de uso: head -n 10 arquivo.txt
- Descrição: Mostra as primeiras 10 linhas do arquivo ''arquivo.txt''.
* **tail** - Exibe as últimas linhas de um arquivo.
- Exemplo de uso: tail -n 10 arquivo.txt
- Descrição: Mostra as últimas 10 linhas do arquivo ''arquivo.txt''.
=== 2. Contagem de Linhas, Palavras e Caracteres ===
* **wc** - Conta o número de linhas, palavras e caracteres em um arquivo.
- Exemplo de uso: wc arquivo.txt
- Descrição: Exibe o número de linhas, palavras e caracteres no arquivo ''arquivo.txt''.
* **wc -l** - Conta apenas o número de linhas em um arquivo.
- Exemplo de uso: wc -l arquivo.txt
- Descrição: Mostra o número de linhas no arquivo ''arquivo.txt''.
=== 3. Redirecionamento de Saída ===
* **>** - Redireciona a saída para um arquivo, sobrescrevendo o conteúdo.
- Exemplo de uso: echo "Texto de exemplo" > saida.txt
- Descrição: Escreve o texto "Texto de exemplo" no arquivo ''saida.txt'', sobrescrevendo qualquer conteúdo anterior.
* **>>** - Redireciona a saída para um arquivo, adicionando ao conteúdo existente.
- Exemplo de uso: echo "Novo texto" >> saida.txt
- Descrição: Adiciona o texto "Novo texto" ao final do arquivo ''saida.txt'' sem sobrescrever o conteúdo anterior.
=== 4. Redirecionamento de Entrada ===
* **<** - Usa o conteúdo de um arquivo como entrada para um comando.
- Exemplo de uso: cat < arquivo.txt
- Descrição: Redireciona o conteúdo de ''arquivo.txt'' como entrada para o comando ''cat'', exibindo-o no terminal.
===== Nível Intermediário =====
=== 1. Busca de Texto com `grep` ===
* **grep** - Busca por padrões de texto em arquivos.
- Exemplo de uso: grep "erro" arquivo.log
- Descrição: Procura pela palavra "erro" no arquivo ''arquivo.log'' e exibe as linhas que contêm o termo.
* **grep -i** - Realiza a busca ignorando maiúsculas e minúsculas.
- Exemplo de uso: grep -i "aviso" arquivo.log
- Descrição: Procura por "aviso" no arquivo ''arquivo.log'', ignorando diferenças entre maiúsculas e minúsculas.
* **grep -r** - Busca recursivamente em diretórios.
- Exemplo de uso: grep -r "falha" /var/log/
- Descrição: Procura pelo termo "falha" em todos os arquivos e subdiretórios dentro de ''/var/log/''.
=== 2. Ordenação de Conteúdo com `sort` ===
* **sort** - Ordena as linhas de um arquivo alfabeticamente.
- Exemplo de uso: sort nomes.txt
- Descrição: Ordena as linhas do arquivo ''nomes.txt'' em ordem alfabética.
* **sort -r** - Ordena as linhas de um arquivo em ordem reversa.
- Exemplo de uso: sort -r nomes.txt
- Descrição: Ordena as linhas de ''nomes.txt'' em ordem alfabética reversa.
* **sort -n** - Ordena números em ordem crescente.
- Exemplo de uso: sort -n numeros.txt
- Descrição: Ordena as linhas de ''numeros.txt'' contendo números em ordem crescente.
=== 3. Seleção de Colunas com `cut` ===
* **cut** - Extrai campos específicos de um arquivo.
- Exemplo de uso: cut -d ',' -f 1 lista.csv
- Descrição: Extrai a primeira coluna de um arquivo CSV, onde as colunas estão separadas por vírgulas.
* **cut -c** - Extrai uma faixa de caracteres de cada linha.
- Exemplo de uso: cut -c 1-10 arquivo.txt
- Descrição: Exibe os primeiros 10 caracteres de cada linha do arquivo ''arquivo.txt''.
=== 4. Substituição de Texto com `sed` ===
* **sed** - Substitui texto em arquivos.
- Exemplo de uso: sed 's/erro/ERRO/g' arquivo.log
- Descrição: Substitui todas as ocorrências de "erro" por "ERRO" no arquivo ''arquivo.log''.
* **sed -i** - Substitui texto diretamente no arquivo.
- Exemplo de uso: sed -i 's/aviso/AVISO/g' arquivo.log
- Descrição: Substitui "aviso" por "AVISO" em todas as linhas de ''arquivo.log'', editando o arquivo diretamente.
===== Nível Avançado =====
=== 1. Uso de Expressões Regulares com `grep` ===
* **grep -E** - Usa expressões regulares estendidas.
- Exemplo de uso: grep -E "[0-9]{3}-[0-9]{2}-[0-9]{4}" arquivo.txt
- Descrição: Busca por padrões de números de CPF (no formato ''000-00-0000'') em ''arquivo.txt'' usando expressões regulares.
* **grep -v** - Exclui linhas que correspondem ao padrão.
- Exemplo de uso: grep -v "erro" arquivo.log
- Descrição: Exibe todas as linhas de ''arquivo.log'' que **não** contêm a palavra "erro".
=== 2. Comparação e Combinação de Arquivos ===
* **diff** - Compara dois arquivos linha por linha.
- Exemplo de uso: diff arquivo1.txt arquivo2.txt
- Descrição: Compara ''arquivo1.txt'' com ''arquivo2.txt'' e exibe as diferenças entre eles.
* **comm** - Compara arquivos linha a linha e exibe as linhas comuns e únicas.
- Exemplo de uso: comm arquivo1.txt arquivo2.txt
- Descrição: Exibe três colunas: as linhas exclusivas de ''arquivo1.txt'', as exclusivas de ''arquivo2.txt'', e as comuns a ambos.
=== 3. Junção de Arquivos com `paste` e `join` ===
* **paste** - Junta o conteúdo de arquivos lado a lado.
- Exemplo de uso: paste arquivo1.txt arquivo2.txt
- Descrição: Combina as linhas de ''arquivo1.txt'' e ''arquivo2.txt'' lado a lado, separadas por uma tabulação.
* **join** - Junta arquivos baseados em um campo comum.
- Exemplo de uso: join -1 1 -2 1 arquivo1.txt arquivo2.txt
- Descrição: Junta os arquivos ''arquivo1.txt'' e ''arquivo2.txt'' com base no primeiro campo de cada linha (normalmente uma chave ou ID).
=== 4. Manipulação Avançada de Texto com `awk` ===
* **awk '{print $1, $3}'** - Extrai campos específicos de um arquivo.
- Exemplo de uso: awk '{print $1, $3}' arquivo.txt
- Descrição: Exibe o primeiro e o terceiro campo de cada linha em ''arquivo.txt''. Os campos são separados por espaços ou tabulações por padrão.
* **awk -F** - Define um delimitador de campo específico.
- Exemplo de uso: awk -F ',' '{print $2}' arquivo.csv
- Descrição: Usa a vírgula como delimitador para campos e exibe o segundo campo de cada linha no arquivo ''arquivo.csv''.
=== 5. Substituições Complexas com `sed` ===
* **sed 's/\(.*\):\(.*\)/\2: \1/'** - Troca a ordem de campos delimitados.
- Exemplo de uso: sed 's/\(.*\):\(.*\)/\2: \1/' arquivo.txt
- Descrição: Troca de posição dois campos separados por dois pontos (''':''), invertendo suas posições em ''arquivo.txt''.
* **sed '/^$/d'** - Remove linhas em branco.
- Exemplo de uso: sed '/^$/d' arquivo.txt
- Descrição: Remove todas as linhas em branco de ''arquivo.txt'', limpando o conteúdo do arquivo.
===== Nível Especializado =====
=== 1. Fluxo de Dados com `xargs` ===
* **xargs** - Passa a saída de um comando como argumento para outro.
- Exemplo de uso: cat arquivos.txt | xargs rm
- Descrição: Lê os nomes dos arquivos listados em ''arquivos.txt'' e os passa como argumento para o comando ''rm'', removendo todos os arquivos listados.
* **find + xargs** - Combinação poderosa para manipulação de grandes quantidades de arquivos.
- Exemplo de uso: find /home/usuario -name "*.log" | xargs gzip
- Descrição: Encontra todos os arquivos com a extensão ''.log'' no diretório ''/home/usuario'' e os compacta usando o comando ''gzip''.
=== 2. Manipulação de Fluxo de Dados com `tee` ===
* **tee** - Divide a saída de um comando entre um arquivo e o terminal.
- Exemplo de uso: ls | tee lista.txt
- Descrição: Exibe a saída do comando ''ls'' no terminal e, ao mesmo tempo, a grava no arquivo ''lista.txt''.
* **tee -a** - Adiciona saída ao arquivo em vez de sobrescrevê-lo.
- Exemplo de uso: echo "Nova entrada" | tee -a log.txt
- Descrição: Adiciona a frase "Nova entrada" ao arquivo ''log.txt'' sem sobrescrever seu conteúdo.
=== 3. Named Pipes (`mkfifo`) ===
* **mkfifo** - Cria um named pipe (FIFO), que pode ser usado para comunicação entre processos.
- Exemplo de uso: mkfifo meu_pipe
- Descrição: Cria um pipe nomeado chamado ''meu_pipe'', permitindo que um processo escreva dados enquanto outro lê, usando o pipe como intermediário.
* **Uso de Named Pipes** - Escreve e lê dados de um named pipe.
- Exemplo de uso:
echo "dados" > meu_pipe & cat < meu_pipe
- Descrição: O comando ''echo'' escreve "dados" no pipe ''meu_pipe'', enquanto o comando ''cat'' lê esses dados do pipe e os exibe no terminal.
=== 4. Manipulação de Grandes Arquivos com `split` e `sort` ===
* **split** - Divide um arquivo grande em partes menores.
- Exemplo de uso: split -l 1000 grande_arquivo.txt pequeno_arquivo_
- Descrição: Divide o arquivo ''grande_arquivo.txt'' em arquivos menores com 1000 linhas cada, nomeados sequencialmente como ''pequeno_arquivo_aa'', ''pequeno_arquivo_ab'', etc.
* **sort + split** - Ordena e divide arquivos de forma eficiente.
- Exemplo de uso: sort grande_arquivo.txt | split -l 1000 - pequeno_arquivo_
- Descrição: Ordena o conteúdo do arquivo ''grande_arquivo.txt'' e o divide em partes menores de 1000 linhas cada, mantendo a ordenação.
=== 5. Processamento Paralelo com `parallel` ===
* **parallel** - Executa comandos de forma paralela em múltiplas entradas.
- Exemplo de uso: cat arquivos.txt | parallel gzip
- Descrição: Usa o comando ''gzip'' para compactar todos os arquivos listados em ''arquivos.txt'' simultaneamente, melhorando a eficiência ao utilizar múltiplos núcleos de CPU.
* **find + parallel** - Executa comandos em paralelo sobre múltiplos arquivos.
- Exemplo de uso: find /dados -name "*.txt" | parallel wc -l
- Descrição: Encontra todos os arquivos ''*.txt'' no diretório ''/dados'' e conta as linhas de cada um deles em paralelo, utilizando todos os núcleos disponíveis.
=== 6. Manipulação de Streams com `tr` ===
* **tr** - Substitui ou remove caracteres em um fluxo de texto.
- Exemplo de uso: echo "teste de exemplo" | tr ' ' '_'
- Descrição: Substitui todos os espaços por underscores no fluxo de texto "teste de exemplo", resultando em ''teste_de_exemplo''.
* **tr -d** - Remove caracteres específicos.
- Exemplo de uso: cat arquivo.txt | tr -d '\n'
- Descrição: Remove todas as quebras de linha (''\n'') do arquivo ''arquivo.txt'', juntando o conteúdo em uma única linha.