O que é '2 & 1' e '/ dev / null'

1

Eu tenho navegado por scripts e vejo 2>&1 & /dev/null em todos os lugares. O que eles são? Após googling, é diferente para o OS X do que para o Linux?

    
por snihalani 29.08.2012 / 00:39

2 respostas

2

Existem três "fluxos de arquivos padrão" que os processos do Unix podem usar - stdin , stdout e stderr - stdin normalmente lêem entrada do teclado e stdout e stderr geralmente vá para a janela do terminal. stderr obtém o número do descritor de arquivo 2 e stdout obtém o número do descritor de arquivo 1 . 2>&1 significa "redireciona toda a saída para stderr para o mesmo lugar que a stdout está indo". /dev/null é um dispositivo de caractere - simplesmente descarta qualquer coisa escrita nele.

Se você não quiser armazenar a saída de um script em qualquer lugar e não quiser vê-lo no seu terminal, poderá redirecionar stderr para o mesmo local que stdout com 2>&1 , e, em seguida, redirecione stdout para /dev/null com > /dev/null

Se você fosse redirecionar apenas stdout com > /dev/null , ainda veria erros no seu terminal.

    
por 29.08.2012 / 00:44
1

2>&1 é a informação para o shell que está executando o script para redirecionar toda a saída, incluindo erros para o destino especificado, como arquivo ou /dev/null

A localização /dev nos sistemas Linux fornece ao sistema acesso aos dispositivos. Um desses dispositivos é um pseudo-dispositivo chamado nulo. / dev / null é um dispositivo vazio - um vácuo, se você quiser. Não faz nada além de ser um buraco onde você coloca algo e isso desaparece. Se você copiar /dev/null para algum arquivo como:

cp /dev/null /tmp/foo

o arquivo especificado estará vazio.

Informações detalhadas sobre como redirecionar a saída podem ser encontradas aqui .

E aqui é uma definição completa de / dev / null:

On UNIX, this is a virtual-file that can be written to. Data written to this file gets discarded. It is similar to the file call NUL on Windows machines. Key point: When rooting a machine, intruders will often redirect logging to /dev/null For example, the command ln -s /dev/null .bash_history will cause the system to stop logging bash commands. Culture: In the vernacular, means much the same thing as black hole. Typical usage: if you don't like what I have to say, please direct your comments to /dev/null.

    
por 29.08.2012 / 00:44

Tags