<Anterior | Conteúdo | Próxima>
No entanto, como o Linux é um sistema flexível, essas configurações padrão não precisam necessariamente ser aplicadas. A saída padrão, por exemplo, em um servidor altamente monitorado em um grande ambiente pode ser uma impressora.
5.1.2. Os operadores de redirecionamento
5.1.2.1. Redirecionamento de saída com> e |
Às vezes, você desejará colocar a saída de um comando em um arquivo ou pode querer emitir outro comando na saída de um comando. Isso é conhecido como redirecionamento de saída. O redirecionamento é feito usando o ">" (símbolo de maior que) ou usando o "|" (tubo) operador que envia a saída padrão de um comando para outro comando como entrada padrão.
Como vimos antes, o gato O comando concatena arquivos e os coloca todos juntos na saída padrão. Redirecionando esta saída para um arquivo, este nome de arquivo será criado - ou sobrescrito se já existir, então tome cuidado.
nancy: ~> teste de gato1
algumas palavras
nancy: ~> teste de gato2
algumas outras palavras
nancy: ~> cat test1 test2> test3
nancy: ~> teste de gato3
algumas palavras
nancy: ~> teste de gato1
algumas palavras
nancy: ~> teste de gato2
algumas outras palavras
nancy: ~> cat test1 test2> test3
nancy: ~> teste de gato3
algumas palavras
alguns Outros palavras
Não substitua!
Tenha cuidado para não sobrescrever arquivos existentes (importantes) ao redirecionar a saída. Muitos shells, incluindo o Bash, têm um recurso integrado para protegê-lo desse risco: nocturno. Consulte as páginas de informações para obter mais informações. No Bash, você gostaria de adicionar o conjunto -o nocturno comando para o seu .bashrc arquivo de configuração para evitar a substituição acidental de arquivos.
Redirecionar "nada" para um arquivo existente é igual a esvaziar o arquivo:
nancy: ~> ls -l lista -rw-rw-r-- 1 nancy | nancy | 117 lista de 2 de abril às 18:09 |
nancy: ~> > lista | ||
nancy: ~> ls -l lista -rw-rw-r-- 1 nancy | nancy | 0 lista de 4 de abril às 12:01 |
Este processo é chamado truncado.
O mesmo redirecionamento para um arquivo inexistente criará um novo arquivo vazio com o nome fornecido:
nancy: ~> ls -l lista nova
ls: newlist: Não existe esse arquivo ou diretório
nancy: ~> > nova lista
nancy: ~> ls -l lista nova
ls: newlist: Não existe esse arquivo ou diretório
nancy: ~> > nova lista
nancy: ~> ls -l lista nova
-rw-rw-r-- 1 nancy nancy
0 4 de abril 12:05 nova lista
nancy: ~> ls -l lista nova
-rw-rw-r-- 1 nancy nancy
O Capítulo 7 fornece mais alguns exemplos sobre o uso desse tipo de redirecionamento. Alguns exemplos usando piping de comandos:
Para localizar uma palavra em algum texto, exiba todas as linhas que correspondem a "padrão1" e exclua as linhas que também correspondem a "padrão2" da exibição:
grep pattern1 lima | firmeza -v pattern2
Para exibir a saída de um diretório listando uma página por vez:
ls -A | menos
Para localizar um arquivo em um diretório:
ls -l | firmeza parte_do_nome_do_arquivo
5.1.2.2. Redirecionamento de entrada
Em outro caso, você pode querer que um arquivo seja a entrada de um comando que normalmente não aceitaria um arquivo como uma opção. Esse redirecionamento de entrada é feito usando o operador "<" (símbolo de menor que).
Abaixo está um exemplo de envio de um arquivo para alguém, usando o redirecionamento de entrada.
Andy: ~> enviar [email protected] < pendência
Se o usuário Mike existe no sistema, você não precisa digitar o endereço completo. Se você deseja entrar em contato com alguém na Internet, insira o endereço totalmente qualificado como um argumento para enviar.
Isso parece um pouco mais difícil do que o gato do iniciante lima | correspondência alguém, mas é obviamente uma forma muito mais elegante de usar as ferramentas disponíveis.
5.1.2.3. Combinando redirecionamentos
O exemplo a seguir combina o redirecionamento de entrada e saída. O arquivo texto.txt é verificado primeiro em busca de erros ortográficos e a saída é redirecionada para um arquivo de registro de erros:
feitiço texto.txt > error.log
O comando a seguir lista todos os comandos que você pode emitir para examinar outro arquivo ao usar menos:
Mike: ~> menos --ajuda | grep -i examine
: e [arquivo] Examinar um novo arquivo.
: n * Examine o (enésimo) próximo arquivo na linha de comando.
: p * Examine o (enésimo) arquivo anterior na linha de comando.
: x * Examine o primeiro (ou enésimo) arquivo na linha de comando.
Mike: ~> menos --ajuda | grep -i examine
: e [arquivo] Examinar um novo arquivo.
: n * Examine o (enésimo) próximo arquivo na linha de comando.
: p * Examine o (enésimo) arquivo anterior na linha de comando.
: x * Examine o primeiro (ou enésimo) arquivo na linha de comando.
O -i opção é usada para pesquisas que não diferenciam maiúsculas de minúsculas - lembre-se de que os sistemas UNIX são muito sensíveis a maiúsculas e minúsculas. Se você quiser salvar a saída deste comando para referência futura, redirecione a saída para um arquivo:
Mike: ~> menos --ajuda | grep -i examine> examine-arquivos-em-menos
Mike: ~> gato examinar-arquivos-em-menos
: e [arquivo] Examinar um novo arquivo.
: n * Examine o (enésimo) próximo arquivo na linha de comando.
: p * Examine o (enésimo) arquivo anterior na linha de comando.
: x * Examine o primeiro (ou enésimo) arquivo na linha de comando.
Mike: ~> menos --ajuda | grep -i examine> examine-arquivos-em-menos
Mike: ~> gato examinar-arquivos-em-menos
: e [arquivo] Examinar um novo arquivo.
: n * Examine o (enésimo) próximo arquivo na linha de comando.
: p * Examine o (enésimo) arquivo anterior na linha de comando.
: x * Examine o primeiro (ou enésimo) arquivo na linha de comando.
A saída de um comando pode ser canalizada para outro comando virtualmente quantas vezes você quiser, contanto que esses comandos normalmente leiam a entrada da entrada padrão e gravem a saída na saída padrão.
Às vezes não, mas pode haver opções especiais que instruem esses comandos a se comportarem de acordo com as definições padrão; portanto, leia a documentação (páginas man e Info) dos comandos que você usa se encontrar erros.
Novamente, certifique-se de não usar nomes de arquivos existentes de que ainda precisa. Redirecionar a saída para arquivos existentes substituirá o conteúdo desses arquivos.
5.1.2.4. O >> operador
Em vez de substituir os dados do arquivo, você também pode anexar texto a um arquivo existente usando dois sinais de maior que subsequentes:
Exemplo:
Mike: ~> lista de desejos de gatos
mais dinheiro menos trabalho
Mike: ~> data >> lista de desejos
Mike: ~> lista de desejos de gatos
mais dinheiro menos trabalho
Mike: ~> data >> lista de desejos
Mike: ~> lista de desejos de gatos
mais dinheiro menos trabalho
Qui, 28 de fevereiro 20:23:07 CET 2002
Mike: ~> lista de desejos de gatos