Um exemplo é / dev / null. É um arquivo especial que está presente em todos os sistemas 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ê deseja 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. Veja isso 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 comando a seguir imprimirá a string entre aspas duplas. Aqui, a saída é armazenada em stdout .
$jogou foraOlá Mundo
O próximo comando nos mostrará o status de saída do comando executado anteriormente.
$jogou fora $?
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$jogou fora $?
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.
$jogou foraOlá Mundo>log.txt
O seguinte comando redirecionará o stderr para um arquivo de texto.
$asdfadsa2>error.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 (hello, neste caso) no diretório / sys.
$pegada -rOlá/sys/
No entanto, ele irá gerar muitos erros, pois sem o privilégio de root, o 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.
$pegada -rOlá/sys/ 2> /dev/nulo
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 o ping do Google.
$pingGoogle 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çou o Google. Como fazemos isso?
$pingGoogle com1> /dev/nulo
Aqui, o conteúdo de stdout são despejados em / dev / null, deixando apenas os erros.
Redirecione todas as saídas para / dev / null
Em certas situações, a saída pode não ser útil. Usando o redirecionamento, podemos despejar toda a saída no vazio.
$pegada -rOlá/sys/ > /dev/nulo2> &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 produzir. No entanto, se você estiver confuso, pode sempre verificar se o comando foi executado com sucesso.
$jogou fora $?
O valor é 2 porque o comando gerou muitos erros.
Se você tende a esquecer o descritor de arquivo de stdout e stderr , o comando a seguir será suficiente. É um formato mais generalizado do comando anterior. Ambos stdout e stderr será redirecionado para / dev / null.
$pegada -rOlá/sys/ &> /dev/nulo
Outros exemplos
Isso é interessante. Lembra 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 E se=<big_file> do=/dev/nulostatus= progressobs= 1Miflag= 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 de sua conexão com a Internet.
$wget -OU /dev/nulo<big_file_link>
Pensamentos finais
Esperançosamente, você tem um entendimento claro do que é esse arquivo / dev / null. É um dispositivo especial que, se escrito nele, descarta e se lido, lê nulo. O verdadeiro potencial desse recurso interessante está em scripts bash interessantes.
Você está interessado em scripts bash? Verificação de saída o guia do iniciante para script bash .
Aproveitar!