Apa sebenarnya yang dilakukan oleh 2> / dev / null?

What Exactly Does 2 Dev Null Do



Sama ada anda pengguna Linux baru atau pengaturcara bash yang berpengalaman, sangat mungkin anda menemui perintah samar 2> / dev / null. Walaupun arahan ini kelihatan rumit secara teknikal, tujuannya sangat mudah. Ini merujuk pada perangkat nol yang digunakan untuk menekan output dari pelbagai perintah. Artikel ini akan menguraikan setiap bahagian perintah 2> / dev / null, menjelaskan tujuannya, dan melihat contoh bagaimana ia digunakan.

Peranti Null - ‘/ dev / null’

Semua sistem berasaskan Linux mempunyai ciri yang disebut peranti maya. Peranti maya ini berinteraksi seperti fail sebenar dalam sistem operasi. Cara kerja peranti maya seperti ini adalah serupa dengan peranti sebenar; mereka digunakan untuk menulis dan membaca data. Perbezaan utama antara keduanya adalah bahawa data untuk peranti maya dibekalkan oleh sistem operasi.







/ dev / null adalah peranti kosong - jenis peranti maya khas. Ini terdapat di setiap sistem Linux, dan tujuan peranti ini adalah untuk membuang apa sahaja yang dihantar kepadanya dan membaca End of File (EOF). Sebilangan besar peranti maya digunakan untuk membaca data; namun, / dev / null unik kerana digunakan untuk menyekat sebarang data yang ditulis kepadanya. Dengan kata mudah, ia berfungsi sebagai lubang hitam untuk setiap data yang ditulis kepadanya dalam sistem operasi Linux.



Sekarang, mari kita lihat bahagian yang tinggal dari perintah 2> / dev / null



Penerangan fail - ‘2’

Setiap pelaksanaan perintah di Linux menghasilkan tiga fail yang berkaitan: input standard, output standard, dan fail kesalahan standard. Sistem operasi Linux merujuk kepada setiap fail ini dengan bilangan bulat bukan negatif yang unik.





  • ‘0’ untuk input standard
  • ‘1’ untuk output standard
  • ‘2’ untuk kesalahan standard

Istilah teknikal untuk input standard, output standard, dan aliran ralat standard adalah masing-masing stdin, stdout, dan stderr.

Kami tahu bahawa nombor ‘2’ dalam perintah ‘2> / dev / null’ merujuk kepada aliran ralat standard (stderr).



Pengendali pengalihan fail - ‘>’

Simbol ‘>’ dikenali sebagai pengendali pengalihan fail. Tujuannya adalah untuk mengarahkan apa yang berada di sebelah kiri ke perintah di sebelah kanan. Dengan kata yang lebih mudah, sebarang rentetan data di sebelah kiri akan diarahkan ke sebelah kanan operator.

Sejauh ini, kami telah memahami tujuan di sebalik setiap komponen perintah 2> / dev / null. Ia menghantar aliran ralat ke / dev / null, yang membuangnya. Dengan kata lain, perintah ini digunakan untuk membuang dan menekan output ralat. Namun, jika anda seorang veteran Linux yang berpengalaman, anda dapat melihat kandungan fail / dev / null dengan menjalankan perintah berikut di terminal:

$ls -tempat /penipu/batal

Perintah ini biasanya digunakan dalam senario di mana kita perlu menyaring output berdasarkan ralat atau ketika kita ingin membuang output yang berkaitan dengan keterangan yang salah. Melangkah ke depan, kita akan melihat contoh penggunaannya pada sistem Ubuntu.

Menggunakan 2> / dev / null

Oleh kerana kita tahu bahawa perintah 2> / dev / null digunakan untuk membuang kesalahan, akan selalu digunakan bersama dengan perintah lain. Kami akan melihat pendekatan yang serupa dalam contoh berikut. Anda boleh membuka terminal dengan mengaksesnya melalui menu aplikasi atau menggunakan pintasan papan kekunci Ctrl + Alt + T.

Dalam contoh pertama, kami akan melakukan carian di / sys / direktori untuk rentetan rawak (helloworld dalam kes ini). Perintah untuk mencari adalah grep, dan argumennya adalah rentetan carian. Masukkan arahan berikut untuk mencari rentetan anda.

$cengkaman -rHai dunia/sys/

Perintah carian ini pasti akan menampilkan banyak kesalahan kerana digunakan tanpa akses root. Kami akan menghantar aliran ralatnya ke / dev / null dengan menggunakan perintah 2> / dev / null untuk membuang kesalahan ini.

$cengkaman -rHai dunia/sys/ 2> /penipu/batal

Kita dapat melihat bahawa output perintah jauh lebih kemas dan lebih sederhana daripada yang terakhir. Sebabnya ialah kesalahan tersebut dibuang dengan menggunakan 2> / dev / null, dan kerana perintah grep tidak dapat mencari fail yang sesuai dengan rentetan 'helloworld' kami, ia tidak menunjukkan output.

Untuk memahami penggunaan / dev / null dengan lebih baik, kami akan melihat contoh berikut dari ping laman web mana pun (google.com dalam kes kami). Anda boleh melakukan ping google.com dengan melaksanakan perintah berikut:

$pingGoogle com

Sekiranya kita ingin mengecualikan semua ping yang gagal, kita dapat menggunakan perintah 2> / dev / null:

$pingGoogle com2> /penipu/batal

Dalam kes ini, aliran ralat standard (yang menunjukkan ping yang gagal ke google.com) dihantar ke peranti maya / dev / null yang membuangnya.

Namun, jika kita hanya ingin melihat ping yang gagal, kita dapat menjalankan perintah berikut:

$pingGoogle com1> /penipu/batal

Di sini, kami menghantar aliran output standard (stdout) ke / dev / null device yang membuangnya. Akibatnya, kita hanya tinggal dengan ping yang gagal mencapai pelayan google.com. Namun, dalam kes kami, tidak ada ping yang gagal. Kami juga boleh mengarahkan stdout dan stderr ke lokasi yang berbeza. Ini berguna sekiranya kita ingin membuang output dan menyimpan kesalahan dalam log atau sebaliknya. Anda boleh menjalankan perintah berikut untuk menyimpan ping yang gagal dalam log ralat sambil membuang output standard dari arahan ping:

$pingGoogle com1> /penipu/batal2>ralat.log

Kadang-kadang, anda mungkin ingin menekan semua output perintah (termasuk output standard dan kesalahan standard). Kita dapat mencapainya dengan menggunakan / dev / null device dengan cara yang sedikit berbeza. Anda boleh menaip perintah berikut untuk menekan semua output:

$pingGoogle com> /penipu/batal2> &1

Perhatikan bahawa susunan perintah di sini sangat penting. Setelah melaksanakan perintah ping, ‘> / dev / null’ memberitahu sistem untuk menekan output, dan ‘2> & 1’ mengarahkan aliran ralat standard ke output standard. Dengan cara ini, semua output arahan dibuang.

Kesimpulannya

Kami telah membedah perintah 2> / dev / null dan contoh mudah dalam artikel ini, dan mudah-mudahan, sekarang anda memahami apa yang dilakukannya. Namun, ini hanyalah puncak gunung es; peranti null digunakan dalam pelbagai cara dalam pengaturcaraan bash. Beberapa kegunaan yang lebih maju termasuk memeriksa keberadaan file, mengotomatiskan pemasangan paket, dan menghindari skrip daripada mengalami pengecualian yang tidak diinginkan.