Потому что люди предполагают. Я был одним из тех людей, пока я не проверил это . Легко понять, почему люди предполагают ... Это выглядит опасно ...
... но вы не можете на самом деле переместить вещи в /dev/null
- это специальный файл, который просто поглощает перенаправления (и отправляет их в ничто). Если вы попытаетесь переместить каталог в него, файловая система будет детально взорваться вам в лицо, и если вы попытаетесь переместить файл в него, вы, вероятно, в конечном итоге замените его.
Первая ссылка будет иметь дело с каталогами, но здесь есть отдельный тест только для перезаписи его файлом. Как отмечает Rmano в комментариях, это, вероятно, то, что вы не должны делать без присмотра взрослых. Здесь есть риск.
$ 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
не приведет к перемещению этих данных в ничто. Это приведет к тому, что данные будут перемещены нормально, но/dev/null
будут перезаписаны, и поэтому вы можете переместить их назад :) Также см. Askubuntu.com/questions/435887/…sudo mv file /dev/null
это удастся, и может легко привести к совершенно непригодной системе. Смотрите мои комментарии по вопросу, связанному в комментарии @MalteSkoruppa. Это еще один яркий пример «готовьтесь,sudo
только если вы трижды проверили, что знаете, что делаете» ;-)sudo mknod -m 0666 /tmp/mynull c 1 3
---, а затем поиграть с ней ;-)/dev/null
это просто файл, это файл «специальных символов», но он все же ограничен правилами, которым должны следовать файлы. При этом вы никогда не сможете запустить эту команду:Команда
mv
не допустит этого, поскольку вы перемещаете каталог в файл, который просто не имеет смысла в контексте иmv
знает об этом.пример
Вы не можете скопировать в
/dev/null
любой из них, если это символьный файл, если вы попытаетесь скопировать в него обычный файл.Единственное, что вы можете сделать с этим файлом, это скопировать
mv
другой файл или удалить его.После этой команды
/dev/null
идет обычный файл. Наиболее опасный эффект этого изменения заключается в том, что/dev/null
предполагается, что он никогда не будет выводить какие-либо данные, поэтому некоторые сценарии оболочки предполагают, чтоэквивалентно говорить «ничего». Несоблюдение этого предположения может привести к случайным данным (ну, данным, которые последний процесс записал в `/ dev / null '), вставленным в системные файлы по всей системе, что может привести к совершенно сломанной и невосстановимой системе.
источник
Вы можете записывать файлы или другие входные потоки,
/dev/null
но не в каталоги. Если вы попытаетесь переместить каталог в/dev/null
него, появится сообщение об ошибке, поскольку/dev/null
это не каталог, а файл.Однако, поскольку вы хотите поэкспериментировать
/dev/null
, вам сначала предлагается узнать последствия перемещения файла для перезаписи/dev/null
и способы восстановления после этой ситуации:Как предложено @Rmano в этом ответе на этот вопрос, для того, чтобы поэкспериментировать с ним,
/dev/null
нам лучше создать его копию, а затем провести наши эксперименты. Итак, давайте создадим/tmp/null
и используем его в наших экспериментальных целях:Теперь вперед,
/tmp/null
это наше/dev/null
для всех целей:Давайте создадим
test_file
иtest_dir
внутри каталог под названиемask_ubuntu
.Ниже показано содержание
ask_ubuntu
каталога:Теперь попробуйте перейти
test_file
к/tmp/null
и увидеть содержимоеask_ubuntu
:Команда выполнена успешно и
test_file
больше не доступна. Теперь попробуйте перейтиtest_dir
к тому,/tmp/null
что не удается:test_dir
все еще присутствует внутриask_ubuntu
:Теперь давайте подумаем, сможем ли мы восстановить наши данные
test_file
из/tmp/null
:Таким образом, он все еще там, и
/tmp/null
который был специальным файлом, был перезаписан, и он стал, как и любой другой обычный файл. Мы можем восстановить наш файл, скопировав,/tmp/null
как и любой другой файл:Файл восстановлен.
Заметка:
Если вы не создавали
/tmp/null
и не пытались использовать эти команды напрямую/dev/null
; убедитесь, что вы восстановили файл (если вам нужно), запустивcp /dev/null our_test_file
; и восстановите/dev/null
для целей, которые существуют в нашей системе, выполнив следующие команды, как указано в связанном вопросе, как можно скорее:Вывод:
Таким образом, невозможно переместить каталог в,
/dev/null
и, следовательно, нет вопроса о восстановлении каталога оттуда.Что касается файлов, если вы непосредственно перемещаете файлы в
/dev/null
, вы все равно можете восстановить их, как показано выше. Однако есть два исключения:В течение периода, который вы запускаете,
sudo mv test_file /dev/null
иcp /dev/null our_test_file
, если какой-либо корневой скрипт в системе перезаписывает его, запустивecho "Whatever text the root script wants to send to /dev/null" > /dev/null
(или другие подобные команды). Тогда у нас нет простого способа восстановить наш файл.Если вы перезагрузите систему между запуском этих двух команд.
/dev/null
воссоздается при загрузке, поэтому наш файл теряется, когда мы выключаем компьютер.Но если вы хотите восстановить входные потоки, например
echo "Stream this line to /dev/null" > /dev/null
, вы не сможете восстановить это, поскольку/dev/null
это специальный файл для удаления ненужных файлов и входных потоков, и, как упоминается в статье в Википедии, он не предоставляет никаких данных процессу, который читает из него.Ссылка: статья в Википедии
/dev/null
источник
sudo mv test_file /dev/null
заменяется/dev/null
наtest_file
. После этого/dev/null
это просто обычный файл, и вы можете читать из него все, что вы в него записали. НЕ ДЕЛАЙТЕВсе, что отправлено,
/dev/null
молча отбрасывается. Если вы введете:Вы попадаете
Hello World
на экран. Если вы введете:вы ничего не видите на экране.
Но в случае команды перемещения команда
mv
пытается заменить файл / dev / null на каталог, что невозможно. Поскольку в Linux все является файлом, / dev / null - это файл. Конечно, специальный (файл устройства), специальный файл, позволяющий получить доступ к части оборудования (например, к дискам, разделам, звуковым картам, последовательным портам и т. Д.). В случае / dev / null это не связано с какой-либо частью оборудования, поэтому данные, отправленные на него, отбрасываются без уведомления. Вот почему «они», возможно, назвали это черной дырой.источник