Você pode gravar arquivos ou outros fluxos de entrada em /dev/null
diretórios, mas não em. 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, desde que você deseja experimentar /dev/null
, primeiro é sugerido que você conheça as consequências de mover um arquivo para substituir /dev/null
e como se recuperar dessa situação:
Como sugerido por @Rmano em esta resposta para essa pergunta, a fim de experimentar /dev/null
devemos sim criar uma cópia do mesmo e, em seguida, fazer a nossa experimentação. Então, vamos criar /tmp/null
e usá-lo para nossos propósitos de experimentação:
sudo mknod -m 0666 /tmp/null c 1 3
A partir de agora, /tmp/null
é nosso /dev/null
para todos os fins:
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
A seguir, mostra o conteúdo do ask_ubuntu
diretório:
$ 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 veja 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 foi bem-sucedido e test_file
não está mais disponível. Agora tente avançar test_dir
para o /tmp/null
que não for bem-sucedido:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
ainda está presente dentro 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.
Portanto, ele ainda está lá e o /tmp/null
arquivo especial foi substituído 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 existentes em nosso sistema executando os seguintes comandos, conforme fornecidos na pergunta 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 a partir daí.
No que diz respeito aos arquivos, se você mover diretamente os arquivos /dev/null
, ainda poderá recuperá-lo conforme demonstrado acima. No entanto, existem duas exceções:
Durante o período em que você executa , sudo mv test_file /dev/null
e cp /dev/null our_test_file
, se algum script raiz no sistema o substituir, 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ê reiniciar o sistema entre a execução desses dois comandos. /dev/null
é recriado na inicialização, para que nosso arquivo se perca quando desligamos o computador.
Mas se você deseja recuperar fluxos de entrada como esse echo "Stream this line to /dev/null" > /dev/null
, não é possível recuperá-lo, pois /dev/null
é um arquivo especial para descartar arquivos e fluxos de entrada indesejados e, como o artigo da Wikipedia menciona, ele não fornece dados para um processo que os lê.
Referência: Artigo da Wikipedia sobre/dev/null