O que é / dev / null e como ele pode ajudá-lo?

Se já temos algumas noções da árvore de diretórios GNU / Linux, devemos pelo menos estar familiarizados com a referência / dev /, que é efetivamente onde todos os arquivos relacionados dispositivos de hardware.

Se olharmos no diretório / Dev / veremos um "arquivo" chamado nulo, mas se quisermos abri-lo para ver seu conteúdo, o sistema nos dirá que não é possível, pois não é um conteúdo comum. Anexei a palavra arquivo porque, como todos sabem no Linux, tudo (hardware e software) é representado como um arquivo.

Esta é uma contribuição de Daniel Durante, tornando-se assim um dos vencedores do nosso concurso semanal: «Compartilhe o que você sabe sobre o Linux«. Parabéns Daniel!

A qual dispositivo / dev / null corresponde?

Para fins práticos, imagine uma lata de lixo, um poço sem fundo ou espaço sideral onde jogar qualquer coisa sem a possibilidade de recuperá-la (não importa o quanto os caras da NASA tentem).

Mas se eu já tenho comandos como rm, por que quero algo novo para excluir?

Porque a maneira como os dois “buracos negros” funcionam é completamente diferente: como você faria para substituir a saída padrão de um erro em um comando dentro de um script de shell em tempo de execução? É aqui que entra / dev / null.

Vamos ver com um exemplo.

Criamos um arquivo chamado tests contendo a string "Hello World". Se quisermos representar o conteúdo desse arquivo na linha de comando, podemos fazer isso da seguinte maneira:

usuário @ laptop: ~ $ cat teste
Olá mundo

Se o arquivo não existisse ou fosse nomeado como testes (com um 's' no final), obteríamos o seguinte erro no console:

usuário @ laptop: ~ $ cat testes
cat: tests: O arquivo ou diretório não existe

O que podemos fazer para evitar a mensagem de erro? Bem, basta redirecionar a saída do comando, em caso de erro, para uma "lata de lixo", ou seja, para / dev / null

Como especificamos isso em caso de erro? Aqui você insere os valores padrão de entrada, saída e erro para um programa: STDIN, STDOUT e STDERR (que podem ser substituídos por 0, 1 e 2, respectivamente). Desta forma, se colocarmos ...

usuário @ laptop: ~ $ cat tests 2> / dev / null
usuário @ laptop: ~ $

… Veremos que a mensagem de erro não será produzida no console.

Você deve ter cuidado porque a sintaxe é essencial: entre os caracteres 2 e> não deve haver espaço. Caso contrário, daria o seguinte:

usuário @ laptop: ~ $ cat tests 2> / dev / null
cat: tests: O arquivo ou diretório não existe
cat: 2: O arquivo ou diretório não existe

Em contraste, um espaço entre> e / dev / null não afetará negativamente o resultado.

Também podemos usar o redirecionamento de erro, por exemplo, para capturar erros em um arquivo de log da seguinte maneira:

usuário @ laptop: ~ $ cat tests 2> err.log

Outro caso interessante seria a coleta de resultados em outro arquivo desde que não ocorra erro, para o qual colocaríamos:

usuário @ laptop: ~ $ cat test 1> output_result 2> err.log

Por fim, vale a pena colocar a expressão «> / dev / null 2> & 1» em que se combinam a saída padrão e a saída de erro, redirecionando-as para que em nenhum caso a informação de saída seja obtida.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Guido Inácio Inácio dito

    Ah, mas um dos utilitários mais usados ​​que / dev / null possui está faltando, que está esvaziando os arquivos: $ cat / dev / null> file.log Desta forma, o arquivo file.log ficará vazio. Adicione!

    1.    Eduardo h dito

      Era exatamente a explicação que ele procurava.
      Eu apoio a moção para adicioná-lo =)

      Saludos!

  2.   Paul dito

    Olá, antes de mais nada o artigo é muito bom! a segunda gostaria de contribuir com algo com este link sobre o assunto trabalho cron em php do Cpanel e a terceira parabéns pelo blog!

  3.   Paul dito

    Bom artigo sobre dev / null, que pena eu acho que comentei por engano no lugar errado antes! Peço desculpas

  4.   anônimo dito

    obrigado boa contribuição

  5.   camisas dito

    Saudações, estou recebendo ataque nulo. Eu uso o andrirc e recebo um privado do meu apelido com a palavra Nulo. 2 segundos depois o programa fecha que estive lendo e pelo que vejo isso só pode ser feito pelo Shell, não por alguém externo. Eu tentei me ignorar / ignorar -lrpcntikd e nada me surpreende que o comando continue chegando. Se você tiver alguma maneira de tentar bloqueá-lo, eu agradeceria. Felicidades

  6.   sophia martinez dito

    O que acontece se ao executar a frase o símbolo> não for colocado?

    Alguém poderia me orientar por favor?

  7.   Zero dito

    Bom dia, instalei o Debian netinst no ACER Extensa 5620Z – 32 bits. Assim que a instalação do USB estiver concluída e o pendrive for removido para que ele inicialize a partir do disco rígido (não reinstale a partir da caneta), mas no momento da inicialização o sistema ela me pergunta:
    login debian: xxxxxxxx (ok)
    Senha: xxxxxxxx (ok)
    nil@debian:~$ ???? o que é isto? O que devo colocar lá?

    Sem este comando não posso prosseguir com a inicialização do sistema.
    Pode me ajudar? Não sei como devo continuar.
    Muito obrigado. Atenciosamente.