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!