Karena orang berasumsi. Saya adalah salah satu dari orang-orang itu sampai saya mengujinya . Sangat mudah untuk memahami mengapa orang menganggap ... Itu terlihat berbahaya ...
... tetapi Anda tidak dapat benar-benar memindahkan sesuatu ke /dev/null
- Ini adalah file khusus yang hanya menyerap arahan ulang (dan mengirimkannya ke ketiadaan). Jika Anda mencoba untuk memindahkan direktori ke sana, sistem file akan meledak di wajah Anda dan jika Anda mencoba untuk memindahkan file ke sana, Anda mungkin akan akhirnya menggantinya.
Tautan pertama akan membahas direktori, tetapi inilah tes terpisah hanya untuk menimpanya dengan file. Seperti yang ditunjukkan Rmano dalam komentar, ini mungkin sesuatu yang tidak boleh Anda lakukan tanpa pengawasan orang dewasa. Ada risiko yang terlibat.
$ 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
tidak akan menyebabkan data dipindahkan ke ketiadaan. Ini akan menghasilkan data yang dipindahkan baik-baik saja, tetapi/dev/null
akan ditimpa, dan sehingga Anda dapat memindahkannya kembali :) Juga lihat askubuntu.com/questions/435887/…sudo mv file /dev/null
akan berhasil, dan dapat dengan mudah menyebabkan sistem yang sama sekali tidak dapat digunakan. Lihat komentar saya pada pertanyaan yang ditautkan dalam komentar @Malte Skoruppa. Ini adalah contoh lain yang jelas dari "sudo
hanya tergantung jika Anda tiga kali memeriksa Anda tahu apa yang Anda lakukan" ;-)sudo mknod -m 0666 /tmp/mynull c 1 3
--- dan kemudian memainkannya ;-)/dev/null
hanyalah sebuah file, ini adalah file "karakter khusus" tetapi itu tidak kurang masih terikat oleh aturan bahwa file harus mengikuti. Dikatakan bahwa Anda tidak pernah dapat menjalankan perintah ini:The
mv
perintah tidak akan membiarkan ini karena Anda pindah direktori ke file, yang hanya tidak masuk akal kontekstual danmv
tahu ini.Contoh
Anda tidak dapat menyalin ke
/dev/null
salah satu, mengingat itu file karakter, jika Anda mencoba untuk menyalin file biasa ke dalamnya.Satu-satunya hal yang dapat Anda lakukan untuk file ini adalah menyalinnya
mv
ke file lain atau menghapusnya.Setelah perintah ini,
/dev/null
adalah file biasa. Efek paling berbahaya dari perubahan ini adalah yang/dev/null
seharusnya tidak pernah menampilkan data apa pun, sehingga sejumlah skrip shell akan menganggap itusama dengan mengatakan "tidak ada". Adanya asumsi yang rusak ini dapat menyebabkan data acak (well, data proses terakhir yang ditulis ke `/ dev / null ') dimasukkan dalam file sistem di sekitar sistem --- yang dapat menyebabkan sistem yang benar-benar rusak dan tidak dapat dipulihkan.
sumber
Anda dapat menulis file atau aliran input lainnya
/dev/null
tetapi tidak ke direktori. Jika Anda mencoba memindahkan direktori ke/dev/null
sana akan melaporkan kesalahan karena/dev/null
bukan direktori tetapi file.Namun, karena Anda ingin bereksperimen
/dev/null
, Anda pertama-tama disarankan untuk mengetahui konsekuensi memindahkan file yang akan ditimpa/dev/null
dan cara memulihkan dari situasi itu:Seperti yang disarankan oleh @Rmano dalam jawaban untuk pertanyaan itu, untuk bereksperimen dengan
/dev/null
kita sebaiknya membuat salinannya dan kemudian melakukan eksperimen kita. Jadi, mari buat/tmp/null
dan gunakan untuk tujuan eksperimen kami:Sekarang dan seterusnya,
/tmp/null
adalah milik kita/dev/null
untuk semua tujuan:Mari kita buat
test_file
dantest_dir
di dalam direktori bernamaask_ubuntu
.Berikut ini menunjukkan isi
ask_ubuntu
direktori:Sekarang cobalah untuk pindah
test_file
ke/tmp/null
dan melihat isiask_ubuntu
:Perintah berhasil dan
test_file
tidak lagi tersedia. Sekarang cobalah untuk pindahtest_dir
ke/tmp/null
yang tidak berhasil:test_dir
masih ada di dalamask_ubuntu
:Sekarang, mari kita bayangkan jika kita dapat memulihkan
test_file
dari/tmp/null
:Jadi, itu masih ada dan
/tmp/null
yang merupakan file khusus telah ditimpa dan telah menjadi seperti file normal lainnya. Kami dapat memulihkan file kami dengan menyalin/tmp/null
seperti file lainnya:File pulih.
catatan:
Jika Anda tidak membuat
/tmp/null
dan mencoba perintah-perintah itu secara langsung menggunakan/dev/null
; pastikan Anda memulihkan file (jika perlu) dengan menjalankancp /dev/null our_test_file
; dan pulihkan/dev/null
untuk keperluan yang ada pada sistem kami dengan menjalankan perintah berikut sebagaimana diberikan dalam pertanyaan terkait secepatnya:Kesimpulan:
Jadi, tidak mungkin untuk memindahkan direktori ke
/dev/null
dan karenanya tidak ada pertanyaan untuk memulihkan direktori dari sana.Sejauh menyangkut file, jika Anda langsung memindahkan file ke
/dev/null
, Anda masih dapat memulihkannya seperti yang ditunjukkan di atas. Namun, ada dua pengecualian:Selama periode Anda menjalankan
sudo mv test_file /dev/null
dancp /dev/null our_test_file
, jika ada script root dalam sistem menimpanya dengan menjalankanecho "Whatever text the root script wants to send to /dev/null" > /dev/null
(atau perintah serupa lainnya). Maka kita tidak memiliki cara mudah untuk memulihkan file kita.Jika Anda me-reboot sistem antara menjalankan kedua perintah itu.
/dev/null
akan dibuat ulang saat boot, sehingga file kami hilang saat kami mematikan komputer.Tetapi jika Anda ingin memulihkan aliran input seperti
echo "Stream this line to /dev/null" > /dev/null
, Anda tidak dapat memulihkan bahwa karena/dev/null
merupakan file khusus untuk membuang file yang tidak diinginkan dan input stream dan seperti yang disebutkan dalam artikel Wikipedia, artikel ini tidak menyediakan data apa pun untuk proses yang membaca dari itu.Referensi: Artikel Wikipedia pada
/dev/null
sumber
sudo mv test_file /dev/null
menggantikan/dev/null
dengantest_file
. Jadi setelah itu/dev/null
hanya file normal dan Anda dapat membaca apa pun yang Anda tulis di dalamnya. JANGAN MELAKUKANNYASemua yang dikirim ke
/dev/null
dibuang secara diam-diam. Jika Anda mengetik:Anda mendapatkan
Hello World
di layar. Jika Anda mengetik:Anda tidak mendapatkan apa pun di layar.
Tetapi dalam kasus perintah pindah, perintah
mv
mencoba mengganti file / dev / null dengan direktori, apa yang tidak mungkin. Karena semuanya adalah file di Linux, / dev / null adalah file. Yang khusus tentu saja (file perangkat), file khusus yang memungkinkan mengakses perangkat keras (seperti disk, partisi, kartu suara, port serial, ...). Dalam kasus / dev / null, ini tidak terkait dengan perangkat keras apa pun sehingga data yang dikirim ke perangkat tersebut akan dibuang secara diam-diam. Inilah sebabnya mengapa "mereka" mungkin menyebutnya lubang hitam.sumber