Apa itu / dev / null dan bagaimana ia dapat menolong anda?

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.

Ini adalah sumbangan dari Daniel Durante, sehingga menjadi salah satu pemenang pertandingan mingguan kami: «Kongsi apa yang anda tahu mengenai Linux«. Tahniah Daniel!

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.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   Guido Ignatius Ignatius kata

    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!

    1.    Edward H. kata

      Itu adalah penjelasan yang dia cari.
      Saya menyokong gerakan untuk menambahkannya =)

      Terima kasih!

  2.   Paul kata

    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!

  3.   Paul kata

    Artikel yang bagus mengenai dev / null, sungguh memalukan saya fikir saya salah mengulas di tempat yang salah sebelum ini! saya minta maaf

  4.   Anonymous kata

    terima kasih sumbangan yang baik

  5.   Jer kata

    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

  6.   Sofia martinez kata

    Apa yang berlaku sekiranya semasa melaksanakan hukuman simbol> tidak diletakkan?

    Bolehkah seseorang membimbing saya?

  7.   Tiada kata

    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.