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. |
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.
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!
Era exatamente a explicação que ele procurava.
Eu apoio a moção para adicioná-lo =)
Saludos!
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!
Bom artigo sobre dev / null, que pena eu acho que comentei por engano no lugar errado antes! Peço desculpas
obrigado boa contribuição
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
O que acontece se ao executar a frase o símbolo> não for colocado?
Alguém poderia me orientar por favor?
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.