Você pode gravar arquivos ou outros fluxos de entrada em /dev/null
, mas não em diretórios. Se você tentar mover um diretório para /dev/null
, ele reportará um erro, pois /dev/null
não é um diretório, mas um arquivo.
No entanto, como você deseja experimentar com /dev/null
, sugerimos que primeiro conheça as consequências para mover um arquivo para substituir /dev/null
e como recuperar-se dessa situação:
Como sugerido por @Rmano em esta resposta para essa pergunta, a fim de experimentar com /dev/null
devemos antes criar uma cópia e depois fazer a nossa experimentação. Então, vamos criar /tmp/null
e usá-lo para nossos experimentos:
sudo mknod -m 0666 /tmp/null c 1 3
A partir de agora, /tmp/null
é nosso /dev/null
para todos os efeitos:
Vamos criar um test_file
e um test_dir
dentro de um diretório chamado ask_ubuntu
.
$ mkdir ask_ubuntu
$ cd ask_ubuntu
$ touch test_file
$ mkdir test_dir
$ echo "Let us test if we can recover our test_file." > test_file
O seguinte mostra o conteúdo do diretório ask_ubuntu
:
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:10 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
-rw-r--r-- 1 aditya aditya 0 Mar 18 17:10 test_file
Agora, tente mover nosso test_file
para /tmp/null
e ver o conteúdo de ask_ubuntu
:
$ sudo mv test_file /tmp/null # This succeeds
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:12 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
O comando é bem-sucedido e test_file
não está mais disponível. Agora, tente mover test_dir
para /tmp/null
, o que não é bem-sucedido:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
ainda está presente em ask_ubuntu
:
$ ls -la
total 12
drwxr-xr-x 3 aditya aditya 4096 Mar 18 17:12 .
drwxr-xr-x 4 aditya aditya 4096 Mar 18 17:10 ..
drwxr-xr-x 2 aditya aditya 4096 Mar 18 17:10 test_dir
Agora, vamos descobrir se podemos recuperar nosso test_file
de /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
Então, ele ainda está lá e /tmp/null
, que era um arquivo especial, foi sobrescrito e se tornou como qualquer outro arquivo normal. Podemos recuperar nosso arquivo copiando /tmp/null
como qualquer outro arquivo:
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Arquivo recuperado.
Nota:
Se você não criou /tmp/null
e tentou esses comandos diretamente usando /dev/null
; Certifique-se de recuperar o arquivo (se necessário) executando cp /dev/null our_test_file
; e restaure /dev/null
para os propósitos que existem em nosso sistema, executando os seguintes comandos como fornecidos na questão vinculada o mais rápido possível:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /dev/null
Conclusão:
-
Portanto, é impossível mover um diretório para /dev/null
e, portanto, não há como recuperar o diretório de lá.
-
No que diz respeito aos arquivos, se você mover diretamente os arquivos para /dev/null
, ainda poderá recuperá-los, conforme demonstrado acima. No entanto, existem duas exceções:
-
Durante o período, você executa sudo mv test_file /dev/null
e cp /dev/null our_test_file
, se algum script raiz no sistema sobrescrever executando echo "Whatever text the root script wants to send to /dev/null" > /dev/null
(ou outros comandos semelhantes). Então, não temos uma maneira fácil de recuperar nosso arquivo.
-
Se você reinicializar o sistema entre a execução desses dois comandos. /dev/null
é recriado na inicialização, então nosso arquivo se perde quando desligamos o computador.
-
Mas se você quiser recuperar fluxos de entrada como echo "Stream this line to /dev/null" > /dev/null
, não poderá recuperar isso, pois /dev/null
é um arquivo especial para descartar arquivos indesejados e fluxos de entrada e, como o artigo da Wikipedia menciona, não fornecer quaisquer dados para um processo que leia a partir dele.
Referência: Artigo da Wikipédia sobre /dev/null