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 =
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!