O que é /dev /null e como usá -lo

O que é /dev /null e como usá -lo
Linux é um sistema operacional interessante que hospeda alguns dispositivos virtuais para vários fins. No que diz respeito aos programas em execução no sistema, esses dispositivos virtuais agem como se fossem arquivos reais. As ferramentas podem solicitar e alimentar dados dessas fontes. Os dados são gerados pelo sistema operacional em vez de lê -los de um disco.

Um exemplo é /dev /nulo. É um arquivo especial que está presente em todos os sistemas Linux. No entanto, diferentemente da maioria dos outros arquivos virtuais, em vez de ler, é usado para escrever. Tudo o que você escrever para /dev /null será descartado, esquecido no vazio. É conhecido como dispositivo nulo em um sistema Unix.

Por que você gostaria de descartar algo no vazio? Vamos verificar o que /dev /null é e seu uso.

Pré -requisitos

Antes de mergulhar profundamente no uso de /dev /null, precisamos ter uma compreensão clara do stdout e stderr fluxo de dados. Confira este guia detalhado sobre stdin, stderr, e stdout.

Vamos ter uma reflexão rápida. Sempre que qualquer utilitário de linha de comando é executado, ele gera duas saídas. A saída vai para stdout e o erro (se gerado) vai para stderr. Por padrão, esses dois fluxos de dados estão associados ao terminal.

Por exemplo, o comando a seguir imprimirá a string dentro da marca dupla. Aqui, a saída é armazenada em stdout.

$ eco "Hello World"

O próximo comando nos mostrará o status de saída do comando anteriormente administrado.

$ echo $?

À medida que o comando anterior foi executado com sucesso, o status de saída é 0. Caso contrário, o status de saída será diferente. O que acontece quando você tenta executar um comando inválido?

$ adfadsf
$ echo $?

Agora, precisamos saber sobre o descritor de arquivo. No ecossistema Unix, esses são valores inteiros atribuídos a um arquivo. Ambos stdout (Descritor de arquivo = 1) e stderr (Descritor de arquivo = 2) Tenha um descritor de arquivo específico. Usando o descritor de arquivo (1 e 2 nesta situação), podemos redirecionar o stdout e stderr para outros arquivos.

Para iniciar, o exemplo a seguir redirecionará o stdout do comando Echo para um arquivo de texto. Aqui, não especificamos o descritor de arquivo. Se não for especificado, Bash usará stdout por padrão.

$ eco "Hello World"> log.TXT

O seguinte comando redirecionará o stderr para um arquivo de texto.

$ asdfadsa 2> erro.TXT

Usando /dev /null

Redirecionando a saída para /dev /null

Agora, estamos prontos para aprender a usar /dev /null. Primeiro, vamos verificar como filtrar a saída e erro normal. No comando a seguir, Grep tentará procurar uma string (olá, neste caso) no diretório "/sys".

$ grep -r hello /sys /

No entanto, ele gerará muito erro, pois, sem privilégio de raiz, o Grep não pode acessar vários arquivos. Nesse caso, isso resultará em erros de "permissão negado". Agora, usando o redirecionamento, podemos obter uma saída mais clara.

$ grep -r hello /sys /2> /dev /null

A saída parece muito melhor, certo? Nada! Nesse caso, Grep não tem acesso a muitos arquivos e os acessíveis não têm a string "Hello".

No exemplo seguinte, estaremos pingando no Google.

$ ping google.com

No entanto, não queremos ver todos esses resultados de ping de sucesso. Em vez disso, queremos apenas nos concentrar nos erros quando o ping não conseguiu chegar ao Google. Como fazemos isso?

$ ping google.com 1> /dev /null

Aqui, o conteúdo de stdout são despejados para /dev /null, deixando apenas os erros.

Redirecionar toda a saída para /dev /null

Em determinadas situações, a saída pode não ser útil. Usando o redirecionamento, podemos despejar toda a saída no vazio.

$ grep -r hello /sys /> /dev /null 2> & 1

Vamos quebrar esse comando um pouco. Primeiro, estamos despejando todo o stdout para /dev /null. Então, na segunda parte, estamos dizendo ao Bash para enviar stderr para stdout. Neste exemplo, não há nada para produzir. No entanto, se você estiver confuso, sempre poderá verificar se o comando foi executado com sucesso.

$ echo $?

O valor é 2 porque o comando gerou muitos erros.

Se você tende a esquecer o descritor de arquivo de stdout e stderr, O seguinte comando vai se sair bem. É um formato mais generalizado do comando anterior. Ambos stdout e stderr será redirecionado para /dev /null.

$ grep -r hello /sys /&> /dev /null

Outros exemplos

Isso é interessante. Lembre -se da ferramenta DD? É uma ferramenta poderosa para converter e copiar arquivos. Saiba mais sobre DD. Usando DD, podemos testar a velocidade de leitura seqüencial do seu disco. Claro, não é uma medição precisa. No entanto, para um teste rápido, é bastante útil.

$ dd if = de =/dev/null status = progresso bs = 1m iflag = direto

Aqui, eu usei o Ubuntu 18.04.4 ISO como o grande arquivo.

Da mesma forma, você também pode testar a velocidade de download da sua conexão com a Internet.

$ wget -o /dev /null

Pensamentos finais

Felizmente, você tem uma compreensão clara do que é este arquivo /dev /null. É um dispositivo especial que, se escrito, decantes e, se lido, lê nulo. O verdadeiro potencial dessa característica interessante está em scripts de bash interessantes.

Você está interessado em scripts de bash? Confira o guia para iniciantes para scripts.

Aproveitar!