Gerenciamento de arquivos

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 diversos 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 / null. É um arquivo especial que está presente em cada sistema Linux. No entanto, ao contrário da maioria dos outros arquivos virtuais, em vez de leitura, é usado para escrever. O que quer que você escreva em / dev / null será descartado, esquecido no vazio. É conhecido como o dispositivo nulo em um sistema UNIX.

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

Pré-requisitos

Antes de mergulhar fundo no uso de / dev / null, temos que ter uma compreensão clara do stdout e stderr fluxo de dados. Confira este guia aprofundado sobre Stdin, stderr, e stdout.

Vamos fazer uma atualizaçã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 seguinte comando imprimirá a string entre aspas duplas. Aqui, a saída é armazenada em stdout.

$ echo “Hello World”

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

$ echo $?

Como 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) tem 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 começar, 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, o bash usará stdout por padrão.

$ echo “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 como usar / dev / null. Primeiro, vamos verificar como filtrar a saída normal e o erro. No comando a seguir, grep tentará pesquisar por uma string (olá, neste caso) no diretório “/ sys”.

$ grep -r hello / sys /

No entanto, ele irá gerar muitos erros, pois sem privilégios de root, grep não pode acessar vários arquivos. Nesse caso, isso resultará em erros de “permissão negada”. 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! Neste caso, grep não tem acesso a muitos arquivos e aqueles que estão acessíveis não têm a string “hello”.

No exemplo a seguir, faremos ping no Google.

$ ping google.com

No entanto, não queremos ver todos os resultados de ping bem-sucedidos. Em vez disso, queremos nos concentrar apenas nos erros quando o ping não alcança o Google. Como fazemos isso?

$ ping google.com 1> / dev / null

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

Redirecionar todas as saídas para / dev / null

Em certas situações, a saída pode não ser útil em tudo. 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 todos os 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 a saída. No entanto, se você estiver confuso, pode sempre 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 servirá 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 o dd. Usando o dd, podemos testar a velocidade de leitura sequencial do seu disco. Claro, não é uma medição precisa. No entanto, para um teste rápido, é muito útil.

$ dd if = de = / dev / status nulo = progresso bs = 1M iflag = direto

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

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

$ wget -O / dev / null

Pensamentos finais

Esperançosamente, você tem um entendimento claro do que é este arquivo / dev / null. É um dispositivo especial que, se escrito nele, descarta e se lido, lê nulo. O verdadeiro potencial deste recurso interessante está em scripts bash interessantes.

Você está interessado em scripts bash?? Confira o guia do iniciante para scripts bash.

Apreciar!

Como instalar o League Of Legends no Ubuntu 14.04
Se você é fã de League of Legends, esta é uma oportunidade para testar o funcionamento de League of Legends. Observe que LOL é suportado no PlayOnLinu...
Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...
Instale o emulador Dolphin mais recente para Gamecube e Wii no Linux
O Dolphin Emulator permite que você jogue seus jogos de Gamecube e Wii escolhidos em computadores pessoais Linux (PC). Sendo um emulador de jogo disp...