como usar o redirecionamento de saída para demonstrar o que a árvore faz [duplicar]

-1

Esta é uma pergunta que encontrei em um teste:

Run tree from your home directory.
Explain and demonstrate what it does.
Use output redirection to do this.

Eu não entendo a parte de redirecionamento de saída. Você poderia me explicar por favor?

    
por anonymous1973 08.10.2015 / 19:15

2 respostas

2

tree : tree lista o conteúdo dos diretórios em um formato de árvore. É um programa muito legal e útil que você pode usar na linha de comando para visualizar a estrutura do seu sistema de arquivos.

redirecionamento de saída significa que o comando armazena a saída em outro local que não seja a simples impressão no terminal. se você quiser armazenar a saída do comando tree no arquivo, use o comando

tree > test 

que redirecionará a saída para esse arquivo. este comando criará um arquivo test e se isso já sair, ele substituirá o conteúdo por tree da saída do comando. se você não quiser substituir e apenas deseja anexar, use o comando

tree >> test

isso adicionará a saída do comando tree ao arquivo test . você pode fornecer o caminho completo do arquivo onde deseja armazenar a saída.

    
por pl_rock 08.10.2015 / 19:22
0

Provavelmente, nesse contexto, redirecionamento de saída = redirecionamento da saída padrão ( stdout ) para um arquivo regular .

tree >tree_output.txt

No entanto, o redirecionamento de saída em geral significa o redirecionamento de um dos fluxos de saída padrão (saída padrão ( stdout ) e erro padrão ( stderr ), normalmente ambos direcionados para o terminal) para qualquer coisa que possa ser considerada um arquivo ( arquivo comum, stderr if stdout é o fluxo em questão, stdout if stderr é o fluxo em questão, canal, pipe nomeado (FIFO), dispositivo de bloco, dispositivo de caractere ...) e não é limitado ao redirecionamento da saída padrão ( stdout ) para um arquivo regular como no exemplo.

Portanto, há muitos redirecionamentos de saída possíveis;

Supondo, por uma questão de brevidade, que a saída em questão é a saída padrão ( stdout ), esses são os redirecionamentos possíveis mais comuns:

  • echo foo >file : stdout é redirecionado para um arquivo normal;
  • echo foo >&2 : stdout é redirecionado para stderr ;
  • echo foo | cat : stdout é redirecionado para um canal;
  • mkfifo fifo && echo foo >fifo : stdout é redirecionado para um pipe nomeado (FIFO);
  • echo foo >/dev/sdX : stdout é redirecionado para um dispositivo de bloco ( NÃO FAÇA ISSO - não poderia fazer nada além de bagunçar a tabela de partições do dispositivo de bloco em questão );

Mais redirecionamentos esotéricos:

  • echo foo >/dev/tty : stdout é redirecionado para um dispositivo de caractere, que é o atual pseudo-terminal;
  • Pressionando Ctrl + Alt + F1 , logando, pressionando Ctrl + Alt + F7 , pressionando Ctrl + Alt + T , executando echo foo>/dev/tty1 e pressionando Ctrl + Alt + F1 ; stdout é redirecionado para um dispositivo de caracteres, que é o primeiro pseudo-terminal;

Portanto, o redirecionamento de saída em geral significa o redirecionamento de um dos fluxos de saída padrão (saída padrão ( stdout ) e erro padrão ( stderr ), normalmente ambos direcionados para o terminal) para qualquer coisa que possa ser considerada um arquivo;

Para executar tree usando o redirecionamento de saída (e realmente mostrando algo no terminal), há várias maneiras:

  • tree >tree_output.txt && cat tree_output.txt : executa tree redirecionando stdout para um arquivo normal;
  • tree >&2 : executa tree redirecionando stdout para stderr ;
  • tree | cat : executa tree redirecionando stdout para um canal;
  • mkfifo fifo && tree >fifo : executa tree redirecionando stdout para um canal nomeado;
  • tree >/dev/tty : executa tree redirecionando stdout para um dispositivo de caractere (o pseudo-terminal atual);
  • Pressionando Ctrl + Alt + F1 , logando, pressionando Ctrl + Alt + F7 , pressionando Ctrl + Alt + T , executando echo foo>/dev/tty1 e pressionando Ctrl + Alt + F1 tree >/dev/tty1 : executa tree redirecionando stdout para um dispositivo de caractere (o primeiro pseudo-terminal);
por kos 08.10.2015 / 20:10