Sekiranya kita sudah memiliki beberapa pengertian tentang pohon direktori GNU / Linux, kita setidaknya harus mengetahui tentang / dev / referensi, yang mana semua fail yang berkaitan dengan peranti perkakasan.
Sekiranya kita melihat di direktori / dev / kita akan melihat "fail" dipanggil sifar, tetapi jika kita ingin membukanya untuk melihat isinya, sistem akan memberitahu kita bahawa itu tidak mungkin kerana itu bukan kandungan biasa. Saya telah melampirkan fail perkataan kerana, seperti yang anda semua ketahui untuk Linux segala-galanya (perkakasan dan perisian) ditunjukkan sebagai fail. |
Peranti apa / dev / null sesuai?
Untuk tujuan praktikal, bayangkan tong sampah, lubang tanpa dasar atau ruang luar yang boleh dibuang tanpa membuangnya (tidak kira betapa sukarnya orang NASA mencuba).
Tetapi jika saya sudah mempunyai perintah seperti rm, mengapa saya mahu sesuatu yang baru dihapuskan?
Kerana cara kedua-dua "lubang hitam" berfungsi sama sekali berbeza: bagaimana anda mengatasi output standard dari kesalahan dalam perintah dalam skrip shell pada waktu runtime? Di sinilah / dev / null masuk.
Mari kita lihat dengan contoh.
Kami telah membuat fail yang disebut ujian yang mengandungi rentetan "Hello World". Sekiranya kita ingin mewakili kandungan fail tersebut pada baris perintah, kita dapat melakukannya dengan cara berikut:
pengguna @ komputer riba: ~ $ cat test
Hai dunia
Sekiranya fail tidak ada atau dinamakan sebagai ujian (dengan 's' di akhir), kami akan mendapat ralat berikut di konsol:
pengguna @ komputer riba: ~ $ ujian kucing
kucing: ujian: Fail atau direktori tidak ada
Apa yang boleh kita lakukan untuk mengelakkan mesej ralat? Baiklah, ubah arah output arahan, sekiranya berlaku kesalahan, ke "tong sampah", iaitu ke / dev / null
Bagaimana kita menetapkannya sekiranya berlaku kesalahan? Di sini anda memasukkan nilai input, output, dan ralat standard untuk program: STDIN, STDOUT, dan STDERR (yang masing-masing dapat menggantikan 0, 1, dan 2). Dengan cara ini, jika kita meletakkan ...
pengguna @ komputer riba: ~ $ cat test 2> / dev / null
pengguna @ komputer riba: ~ $
... Kami akan melihat bahawa mesej ralat tidak akan dihasilkan di konsol.
Anda harus berhati-hati kerana sintaksnya penting: antara watak 2 dan> tidak boleh ada ruang. Jika tidak, ia akan memberikan yang berikut:
pengguna @ komputer riba: ~ $ cat test 2> / dev / null
kucing: ujian: Fail atau direktori tidak ada
cat: 2: Fail atau direktori tidak ada
Sebaliknya, jarak antara> dan / dev / null tidak akan memberi kesan negatif terhadap hasilnya.
Kami juga dapat menggunakan pengalihan ralat, misalnya, untuk menangkap kesalahan dalam file log seperti berikut:
pengguna @ komputer riba: ~ $ cat test 2> err.log
Kes lain yang menarik ialah pengumpulan hasil dalam fail lain selagi ralat tidak berlaku, yang mana kami akan meletakkan:
pengguna @ komputer riba: ~ $ cat test 1> output_result 2> err.log
Akhirnya, perlu meletakkan ungkapan "> / dev / null 2> & 1" di mana output standard dan output ralat digabungkan, mengarahkannya sehingga tidak ada maklumat output yang diperoleh.
Ah, tetapi salah satu utiliti yang paling banyak digunakan / dev / null tiada, yang mengosongkan fail: $ cat / dev / null> file.log Dengan cara ini, fail file.log akan kosong. Tambahnya!
Itu adalah penjelasan yang dia cari.
Saya menyokong gerakan untuk menambahkannya =)
Terima kasih!
Helo, pertama sekali artikel sangat bagus! yang kedua saya ingin menyumbang sesuatu dengan pautan ini mengenai perkara ini kerja cron di php dari Cpanel dan tahniah ketiga untuk blog!
Artikel yang bagus mengenai dev / null, sungguh memalukan saya fikir saya salah mengulas di tempat yang salah sebelum ini! saya minta maaf
terima kasih sumbangan yang baik
Salam saya mendapat serangan nol. Saya menggunakan andrirc dan saya mendapat peribadi dari nama samaran saya dengan perkataan Null. 2 saat kemudian program ditutup yang telah saya baca dan dari apa yang saya lihat ini hanya dapat dilakukan oleh Shell, bukan orang luar. Saya telah cuba mengabaikan diri saya / mengabaikan -lrpcntikd dan Tidak ada yang mengejutkan saya kerana arahan itu terus datang. Sekiranya anda mempunyai cara untuk menyekatnya, saya sangat menghargainya. Sorakan
Apa yang berlaku sekiranya semasa melaksanakan hukuman simbol> tidak diletakkan?
Bolehkah seseorang membimbing saya?
Selamat pagi, saya telah memasang Debian netinst dalam ACER Extensa 5620Z – 32 bit. Sebaik sahaja pemasangan dari USB selesai dan pendrive dikeluarkan supaya ia boot dari cakera keras (jangan pasang semula dari pen) tetapi pada saat boot sistem yang dia tanya saya:
log masuk debian: xxxxxxxx (ok)
Kata laluan: xxxxxxxxx (ok)
nil@debian:~$ ???? Apakah ini? Apa yang perlu saya letakkan di sana?
Tanpa arahan ini saya tidak boleh meneruskan boot sistem.
Boleh kamu bantu saya? Saya tidak tahu bagaimana saya harus meneruskan.
Terima kasih banyak - banyak. salam hormat.