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);