I/O Redirecionamento de Entrada / Saída
Neste artigo, exploraremos os poderosos recursos utilizados por muitos programas de linha de comando chamados redirecionamento de input/output. Como temos visto, vários comando tal como ls imprime suas saída na tela. Isto porém não tem nada a ver como o caso. Utilizando algumas notações especiais nós poderemos redirecionar a saída de vários comandos para arquivos, dispositivos, e até mesmo para a entrada de outros comandos.
Saída Padrão
Vários programas de linha de comando que exibe seus resultados o fazem enviando seus resultados para algum dispositivo chamado saída padrão. Por default, a saída padrão direciona seu conteúdo para a tela. Para redirecionar a saída padrão para um arquivo, o caractere ">" é utilizado desta forma:
[alex@linux]$ ls > arquivo_lista.txt
A cada vez que o comando acima é repetido, o arquivo_lista.txt é sobrescrito (desde o início) com a saída do comando ls. Se você quiser que, em vez disto, o novo resultado seja anexado ao arquivo, utilizar ">>" desta forma:
[alex@linux]$ ls >> arquivo_lista.txt
Quando o resultado for anexado, o novo resultado é adicionado ao fim do arquivo, que faz o arquivo alongar-se a cada vez que o comando é repetido. Se o arquivo não existir quando tentar anexar a saída redirecionada, o arquivo será criado.
Entrada Padrão
Vários comandos podem aceitar entradas de algum dispositivo chamado entrada padrão. Por default, a entrada padrão recebe seu conteúdo do teclado, mas assim como a entrada padrão, ela pode ser redirecionada. Para redirecionar a entrada padrão a partir de um arquivo ao invés do teclado, é utilizado o caractere "<" :
[alex@linux]$ sort < arquivo_lista.txt
[alex@linux]$ sort < arquivo_lista.txt > sorted_arquivo_lista.txt
Como podemos ver, um comando pode ter tanto sua entrada quanto a saída redirecionada. Esteja consciente que a ordem de redirecionamento não importa. O único requisito é que o operador de redirecionamento ("<" & ">") deve aparecer depois de outra opção e argumentos no comando.
Pipes "|"
De longe, a mais útil e poderosa coisa que você pode fazer com o redirecionamento de I/O é conectar múltiplos comandos juntos com o que nós chamamos de pipes "|". Com pipes, a saída padrão de um comando é alimentado com a entrada padrão de um outro. Aqui está meu comando favorito absoluto:
[alex@linux]$ ls -l | less
Por conectar os comando juntos você pode realizar proezas incríveis. Aqui estão alguns exemplos que desejará experimentar:
Comando | Que isto faz |
---|---|
ls -lt | head | Exibe os 10 mais recentes arquivos do diretório atual.head - saída dos primeiros arquivos da lista do diretório.
|
du | sort -nr | Exibe uma lista de diretórios e quantos de espaço eles ocupam, classificados a partir do maior ao menor.du - espaço estimado usado pelo arquivo
|
find . -type f -print | wc -l | Exibe o número total de arquivos do atual diretório de trabalho e seus subdiretórios.find - busca por arquivos em uma hierarquia de diretório. |
Filtros
Uma classe de programas que você pode usar com pipes é chamados de filtros. Filtros tomam a entrada padrão e realizam uma operação sobre esta, e envia o resultado para uma saída padrão. Desta forma, eles pode ser usados para processar informações de uma forma poderosa. Aqui estão alguns dos mais comuns programas que agem como filtros:
Programa | Que Isto Faz |
---|---|
sort | Classifica entrada padrão, então envia o resultado classificado para a saída padrão. sort - classifica linhas num arquivo texto. |
uniq | Dado um fluxo ordenado de dados a partir da entrada padrão, ele remove linhas duplicadas de dados (ou seja, garante cada linha seja única). |
grep | Examina cada linha de dados foi recebida da entradas e envia o resultado de cada linha que contém um padrão especificado de caracteres padrão. |
fmt | Lê o texto a partir da entrada padrão, em seguida, envia texto formatado para a saída padrão. |
pr | Toma texto inserido a partir da entrada padrão e divide os dados em páginas com quebras de página, cabeçalhos e rodapés, em preparação para a impressão. |
head | Envia o resultado das primeiras poucas linhas a partir da entrada. Útil para obter o cabeçalho de um arquivo. |
tail | Envia o resultado das últimas linhas a partir de sua entrada. Útil para obter resultados como por exemplo as entradas mais recentes de um arquivo de log. |
tr | Traduz caracteres. Pode ser usado para executar tarefas como conversões de MAIÚSCULAS/minúsculas ou mudar os caracteres de terminação da linha de um tipo para outro (por exemplo, a conversão de arquivos de texto do DOS para arquivos de texto estilo Unix). |
sed | Editor de fluxo de dados. Pode executar traduções de texto mais sofisticadas do que tr. |
awk | Uma linguagem de programação inteiramente projetada para a construção de filtros. Extremamente poderosa. |
Nenhum comentário:
Postar um comentário