Porque as pessoas assumem. Eu era uma dessas pessoas até testá-lo . É fácil entender por que as pessoas assumem ... Parece perigoso ...
... mas você não pode realmente mover as coisas para /dev/null
- É um arquivo especial que apenas absorve os redirecionamentos (e os envia para o nada). Se você tentar mover um diretório para ele, o sistema de arquivos explodirá verbalmente na sua cara e se você tentar mover um arquivo para ele, provavelmente acabará substituindo-o.
O primeiro link lida com diretórios, mas aqui está um teste separado apenas para substituí-lo por um arquivo. Como Rmano aponta nos comentários, isso provavelmente é algo que você não deve fazer sem a supervisão de um adulto. Existe risco envolvido.
$ echo "this is my file" > test
$ cat test
this is my file
$ sudo mv test /dev/null
$ cat /dev/null
this is my file
# Fix this!
$ sudo rm /dev/null
$ sudo mknod -m 0666 /dev/null c 1 3
/dev/null
não resultará na movimentação desses dados para o nada. Ele irá resultar nos dados a serem movidos bem, mas/dev/null
será substituído, e assim você pode movê-lo de volta ainda :) Veja também askubuntu.com/questions/435887/...sudo mv file /dev/null
terá sucesso e pode facilmente levar a um sistema completamente inutilizável. Veja meus comentários sobre a questão vinculada no comentário de @MalteSkoruppa. Este é outro exemplo claro de "precedersudo
somente se você três vezes marcada, você sabe o que está fazendo" ;-)sudo mknod -m 0666 /tmp/mynull c 1 3
--- e, em seguida, jogar fora com ele ;-)/dev/null
é apenas um arquivo, é um arquivo de "caractere especial", mas ainda assim não está vinculado pelas regras que os arquivos devem seguir. Dito isto, você nunca poderá executar este comando:O
mv
comando não permitirá isso, pois você está movendo um diretório para um arquivo, que simplesmente não faz sentido contextualmente emv
sabe disso.Exemplo
Você também não pode copiar
/dev/null
, dado que é um arquivo de caractere, se tentar copiar um arquivo comum para ele.A única coisa que você pode fazer com esse arquivo é copiar
mv
outro arquivo ou excluí-lo.Após esse comando,
/dev/null
é um arquivo regular. O efeito mais perigoso desta mudança é que/dev/null
é suposto Nunca saída quaisquer dados, assim que um número de shell script irá assumir queé equivalente a dizer "nada". Quebrar essa suposição pode levar a dados aleatórios (bem, os dados que o último processo gravou em `/ dev / null ') foram inseridos nos arquivos do sistema em todo o sistema - o que poderia levar a um sistema totalmente quebrado e irrecuperável.
fonte
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:A partir de agora,
/tmp/null
é nosso/dev/null
para todos os fins:Vamos criar um
test_file
e umtest_dir
dentro de um diretório chamadoask_ubuntu
.A seguir, mostra o conteúdo do
ask_ubuntu
diretório:Agora tente mover nosso
test_file
para/tmp/null
e veja o conteúdo deask_ubuntu
:O comando foi bem-sucedido e
test_file
não está mais disponível. Agora tente avançartest_dir
para o/tmp/null
que não for bem-sucedido:test_dir
ainda está presente dentroask_ubuntu
:Agora, vamos descobrir se podemos recuperar nosso
test_file
de/tmp/null
: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: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) executandocp /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: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
ecp /dev/null our_test_file
, se algum script raiz no sistema o substituir, executandoecho "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
fonte
sudo mv test_file /dev/null
substitui/dev/null
portest_file
. Então, depois disso,/dev/null
é apenas um arquivo normal e você pode ler tudo o que tiver escrito nele. NÃO FAÇA ISSOTudo o que
/dev/null
é enviado é descartado silenciosamente. Se você digitar:você entra
Hello World
na tela. Se você digitar:você não aparece nada na tela.
Porém, no caso do comando move, o comando
mv
tenta substituir o arquivo / dev / null pelo diretório, o que não é possível. Como tudo é um arquivo no Linux, / dev / null é um arquivo. Um especial, é claro (um arquivo de dispositivo), um arquivo especial que permite acessar peças de hardware (como discos, partições, placas de som, portas seriais, ...). No caso de / dev / null, isso não está vinculado a nenhum hardware, portanto os dados enviados a ele são descartados silenciosamente. É por isso que "eles" podem ter chamado de buraco negro.fonte