При попытке переместить a test_dir
каталог к /dev/null
, Я получаю сообщение
mv: cannot overwrite non-directory ‘/dev/null’ with directory ‘test_dir/’
Затем, почему люди говорят, "Не выполняют команду sudo mv ~ /dev/null
, это переместит Ваш корневой каталог в дыру?"
Но /home
также каталог.
Поскольку люди принимают. Я был одним из тех людей , пока я не протестировал его . Легко понять, почему люди принимают... Это взгляды опасный...
..., но Вы не можете на самом деле переместить вещи в /dev/null
—, Это - специальный файл, который просто поглощает перенаправления (и отправляет их в небытие). При попытке переместить каталог в него, файловая система будет verbosely взрываться в Вашей поверхности и при попытке переместить файл в него, Вы, вероятно, закончите тем, что заменили его.
первая ссылка будет иметь дело с каталогами, но здесь является отдельным тестом только для перезаписи ее с файлом. Как 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
тихо отбрасывается. Если Вы вводите:
echo "Hello World"
Вы добираетесь Hello World
на экране. Если Вы вводите:
echo "Hello World" >/dev/null
Вы ничего не получаете на экране.
, Но в случае команды перемещения, попытки команды mv
заменить файл/dev/null каталогом, что не возможно. Поскольку все - файл в Linux,/dev/null является файлом. Специальный, конечно (файл устройств), специальная часть доступа разрешения файла аппаратных средств (как диски, разделы, звуковые карты, последовательные порты...). В случае/dev/null это не связано ни с какой частью аппаратных средств, таким образом, данные, отправленные в него, тихо отбрасываются. Поэтому "они", возможно, назвали его черной дырой.
/dev/null
просто файл, это - файл "специального символа", но это не менее тихое, связанное правилами, что файлы должны следовать. Это сказанное Вы никогда не могли выполнять эту команду:
$ mv ~ /dev/null
mv
команда не позволит это, так как Вы перемещаете каталог в файл, который просто не имеет смысла контекстуально и mv
знает это.
$ mkdir dir
$ touch afile
$ mv dir afile
mv: cannot overwrite non-directory ‘afile’ with directory ‘dir’
Вы не можете скопировать на /dev/null
также, учитывая он - символьный файл, при попытке скопировать регулярный файл на него.
$ cp ~/bzip2_1.0.6-4_amd64.deb /dev/null
$ ls -l |grep null
crw-rw-rw- 1 root root 1, 3 Mar 16 14:25 null
О единственной вещи можно сделать в этот файл, копия mv
по нему другой файл или удаляют его.
$ mv /path/to/afile /dev/null
После этой команды, /dev/null
регулярный файл. Самый опасный эффект этого изменения - это /dev/null
как предполагается, никогда не производит любые данные, таким образом, много сценариев оболочки примут это
`... < /dev/null`
эквивалентно "ничего" для высказывания. Повреждение этого предположения может привести к случайным данным (хорошо, данные, которые последний процесс записал в '/dev/null') вставленный в системные файлы все вокруг системы---, который мог привести к крайне поврежденной и неисправимой системе.
Можно записать файлы или другие входные потоки к /dev/null
но не каталоги. При попытке переместить каталог в /dev/null
это сообщило бы об ошибке с тех пор /dev/null
не каталог, а файл.
Однако, так как Вы хотите экспериментировать с /dev/null
, Вам сначала предлагают знать, что последствия для перемещения файла перезаписывают /dev/null
и как восстановиться с той ситуации:
Как предложено @Rmano в этом ответе на тот вопрос, для экспериментирования с /dev/null
мы должны скорее создать копию его и затем сделать наше экспериментирование. Так, давайте создадим /tmp/null
и используйте его в наших целях экспериментирования:
sudo mknod -m 0666 /tmp/null c 1 3
Теперь вперед, /tmp/null
наш /dev/null
во всех целях:
Давайте создадим a test_file
и a test_dir
в названном каталоге 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
Следующие шоу содержание 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
Теперь попытайтесь переместить наш test_file
кому: /tmp/null
и посмотрите содержание 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
Команда успешно выполняется и test_file
больше не доступно. Теперь попытайтесь переместиться test_dir
кому: /tmp/null
который не успешно выполняется:
$ sudo mv test_dir/ /tmp/null
mv: cannot overwrite non-directory ‘/tmp/null’ with directory ‘test_dir/’
test_dir
все еще присутствует внутри 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
Теперь, давайте фигурировать, можем ли мы восстановить наш test_file
от /tmp/null
:
$ cat /tmp/null
Let us test if we can recover our test_file.
Так, это все еще там и /tmp/null
то, которое было специальным файлом, было перезаписано, и это стало как любой другой нормальный файл. Мы можем восстановить наш файл путем копирования /tmp/null
точно так же, как любой другой файл:
$ cp /tmp/null our_test_file
$ cat our_test_file
Let us test if we can recover our test_file.
Файл восстанавливается.
Если Вы не создали /tmp/null
и попробованный те команды непосредственно с помощью /dev/null
; удостоверьтесь, что Вы восстанавливаете файл (если Вам нужно к) путем выполнения cp /dev/null our_test_file
; и восстановление /dev/null
в целях это существует в нашей системе путем выполнения следующих команд, как дали в связанном вопросе как можно скорее:
$ sudo rm /dev/null
$ sudo mknod /dev/null c 1 3
$ sudo chmod 666 /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
специальный файл должен расположить от нежелательных файлов и ввести потоки и как статья Wikipedia упоминает, она не предоставляет данных процессу, который читает из нее.
Ссылка: статья Википедии о /dev/null