Ce este / dev / null în Linux?

O que é / dev / null no Linux?

⌛ Reading Time: 5 minutes

Em termos técnicos, “/ dev / null” é um arquivo de dispositivo virtual. No que diz respeito aos programas, eles são tratados como arquivos reais. Os utilitários podem solicitar dados desse tipo de fonte, e o sistema operacional os alimenta com os dados. Mas, em vez de ler do disco, o sistema operacional gera esses dados dinamicamente. Um exemplo de tal arquivo é “/ dev / zero.”

Neste caso, entretanto, você gravará em um arquivo de dispositivo. O que quer que você escreva para “/ dev / null” é descartado, esquecido, jogado no vazio. Para entender por que isso é útil, você deve primeiro ter um conhecimento básico da saída padrão e do erro padrão em sistemas operacionais do tipo Linux ou * nix.

stdout e stder

Um utilitário de linha de comando pode gerar dois tipos de saída. A saída padrão é enviada para stdout. Os erros são enviados para stderr.

Por padrão, stdout e stderr estão associados à janela do terminal (ou console). Isso significa que qualquer coisa enviada para stdout e stderr é normalmente exibida na tela. Mas, por meio de redirecionamentos de shell, você pode alterar esse comportamento. Por exemplo, você pode redirecionar stdout para um arquivo. Dessa forma, em vez de exibir a saída na tela, ela será salva em um arquivo para você ler mais tarde – ou você pode redirecionar o stdout para um dispositivo físico, digamos, um LED digital ou display LCD.

Um artigo completo sobre canais e redirecionamentos está disponível se você quiser saber mais.

  • Com 2> você redireciona mensagens de erro padrão. Exemplo: 2>/dev/null ou 2>/home/user/error.log.
  • Com 1> você redireciona a saída padrão.
  • Com &> você redireciona o erro padrão e a saída padrão.

Use / dev / null para se livrar da saída que você não precisa

Como existem dois tipos de saída, saída padrão e erro padrão, o primeiro caso de uso é filtrar um tipo ou outro. É mais fácil entender por meio de um exemplo prático. Digamos que você esteja procurando uma string em “/ sys” para encontrar arquivos que se referem às configurações de energia.

Haverá muitos arquivos que um usuário comum não root não poderá ler. Isso resultará em muitos erros de “Permissão negada”.

Erros Dev Null Grep

Isso confunde a saída e torna mais difícil localizar os resultados que você está procurando. Como os erros de “permissão negada” fazem parte do stderr, você pode redirecioná-los para “/ dev / null.”

Dev Null Grep sem erros

Como você pode ver, isso é muito mais fácil de ler.

Em outros casos, pode ser útil fazer o inverso: filtrar a saída padrão para que você possa ver apenas os erros.

Erros Dev Null Ping

A captura de tela acima mostra que, sem redirecionar, o ping exibe sua saída normal quando pode alcançar a máquina de destino. No segundo comando, nada é exibido enquanto a rede está online, mas assim que ela é desconectada, apenas mensagens de erro são exibidas.

Você pode redirecionar stdout e stderr para dois locais diferentes.

Nesse caso, as mensagens stdout não serão exibidas e as mensagens de erro serão salvas no arquivo “error.log”.

Redirecionar todas as saídas para / dev / null

Às vezes, é útil eliminar toda a saída. Existem duas maneiras de fazer isso.

A corda >/dev/null significa “enviar stdout para / dev / null” e a segunda parte, 2>&1, significa enviar stderr para stdout. Neste caso, você deve se referir a stdout como “& 1” em vez de simplesmente “1”. Escrever “2> 1” apenas redirecionaria o stdout para um arquivo chamado “1”.

O que é importante observar aqui é que a ordem é importante. Se você reverter os parâmetros de redirecionamento como este:

não funcionará como pretendido. Isso porque assim que 2>&1 é interpretado, stderr é enviado para stdout e exibido na tela. Em seguida, stdout é suprimido quando enviado para “/ dev / null.” O resultado final é que você verá erros na tela em vez de suprimir todas as saídas. Se você não consegue se lembrar da ordem correta, há um redirecionamento mais simples que é muito mais fácil de digitar:

Nesse caso, &>/dev/null equivale a dizer “redirecionar stdout e stderr para este local”.

Outros exemplos onde pode ser útil redirecionar para / dev / null

Digamos que você queira ver a rapidez com que seu disco pode ler dados sequenciais. O teste não é extremamente preciso, mas é preciso o suficiente. Você pode usar dd para isso, mas o dd produz saída para stdout ou pode ser instruído a gravar em um arquivo. Com of=/dev/null você pode dizer ao dd para gravar neste arquivo virtual. Você nem mesmo precisa usar redirecionamentos de shell aqui. if= especifica a localização do arquivo de entrada a ser lido; of= especifica o nome do arquivo de saída, onde escrever.

Dev Null Dd

Em alguns cenários, você pode querer ver a rapidez com que pode fazer download de um servidor. Mas você não quer gravar em seu disco desnecessariamente. Simplesmente, não escreva em um arquivo normal, escreva em “/ dev / null.”

Conclusão

Esperançosamente, os exemplos neste artigo podem inspirá-lo a encontrar suas próprias maneiras criativas de usar “/ dev / null.”

Conhece um caso de uso interessante para este arquivo de dispositivo especial? Deixe um comentário abaixo e compartilhe o conhecimento!