Apa itu / dev / null dan Cara Menggunakannya

What Is Dev Null How Use It



Linux adalah sistem operasi yang menarik yang menghoskan beberapa peranti maya untuk pelbagai tujuan. Sejauh program yang berjalan dalam sistem, peranti maya ini bertindak seolah-olah ia adalah fail sebenar. Alat boleh meminta dan memberi makan data dari sumber ini. Data dihasilkan oleh OS dan bukannya membacanya dari cakera.

Salah satu contohnya ialah / dev / null. Ini adalah fail khas yang terdapat di setiap sistem Linux. Namun, tidak seperti kebanyakan fail maya yang lain, bukannya membaca, ia digunakan untuk menulis. Apa sahaja yang anda tulis ke / dev / null akan dibuang, dilupakan ke dalam kekosongan. Ia dikenali sebagai peranti kosong dalam sistem UNIX.







Mengapa anda mahu membuang sesuatu ke dalam kekosongan? Mari lihat apa itu / dev / null dan penggunaannya.



Prasyarat

Sebelum menyelami penggunaan / dev / null, kita harus memahami dengan jelas tentang stdout dan stderr aliran data. Lihat ini panduan mendalam mengenai stdin , stderr , dan stdout .



Mari kita segar semula. Setiap kali utiliti baris perintah dijalankan, ia menghasilkan dua output. Keluaran pergi ke stdout dan ralat (jika dihasilkan) berlaku stderr . Secara lalai, kedua aliran data ini dikaitkan dengan terminal.





Sebagai contoh, arahan berikut akan mencetak rentetan dalam tanda petik berganda. Di sini, output disimpan di stdout .

$membuangHai dunia



Perintah seterusnya akan menunjukkan kepada kita status keluar dari arahan yang dijalankan sebelumnya.

$membuang $?

Oleh kerana arahan sebelumnya berjaya dijalankan, status keluar adalah 0. Jika tidak, status keluar akan berbeza. Apa yang berlaku semasa anda cuba menjalankan perintah yang tidak sah?

$ adfadsf
$membuang $?

Sekarang, kita perlu mengetahui mengenai deskriptor fail. Dalam ekosistem UNIX, ini adalah nilai integer yang diberikan pada fail. Kedua-duanya stdout (deskriptor fail = 1) dan stderr (deskriptor fail = 2) mempunyai deskriptor fail tertentu. Dengan menggunakan deskriptor fail (1 dan 2 dalam situasi ini), kita dapat mengarahkan stdout dan stderr ke fail lain.

Untuk pemula, contoh berikut akan mengarahkan semula stdout arahan echo ke fail teks. Di sini, kami tidak menentukan perihal fail. Sekiranya tidak dinyatakan, bash akan digunakan stdout secara lalai.

$membuangHai dunia>log.txt

Perintah berikut akan mengarahkan semula stderr ke fail teks.

$asdfadsa2>ralat.txt

Menggunakan / dev / null

Mengalihkan output ke / dev / null

Sekarang, kami bersedia untuk belajar bagaimana menggunakan / dev / null. Pertama, mari kita periksa cara menyaring output dan ralat normal. Dalam perintah berikut, grep akan berusaha mencari rentetan (halo, dalam hal ini) di direktori / sys.

$cengkaman -rhello/sys/

Namun, ia akan menghasilkan banyak ralat kerana tanpa hak root, grep tidak dapat mengakses sejumlah fail. Dalam kes sedemikian, ini akan mengakibatkan kesalahan yang ditolak oleh Izin. Sekarang, dengan menggunakan pengalihan, kita dapat memperoleh output yang lebih jelas.

$cengkaman -rhello/sys/ 2> /penipu/batal

Hasilnya kelihatan lebih baik, bukan? Tidak ada! Dalam kes ini, grep tidak mempunyai akses ke banyak fail dan fail yang boleh diakses tidak mempunyai tali.

Dalam contoh berikut, kami akan melakukan ping ke Google.

$pingGoogle com

Namun, kami tidak mahu melihat semua hasil ping yang berjaya. Sebagai gantinya, kami hanya ingin memfokus pada kesalahan ketika ping tidak dapat menghubungi Google. Bagaimana kita melakukannya?

$pingGoogle com1> /penipu/batal

Di sini, kandungan stdout dibuang ke / dev / null, hanya meninggalkan kesalahan.

Ubah semua output ke / dev / null

Dalam situasi tertentu, output mungkin tidak berguna sama sekali. Dengan menggunakan pengalihan, kita dapat membuang semua output ke dalam kekosongan.

$cengkaman -rhello/sys/ > /penipu/batal2> &1

Mari kita hentikan perintah ini sedikit. Pertama, kita membuang semua stdout ke / dev / null. Kemudian, di bahagian kedua, kami memberitahu bash untuk menghantar stderr ke stdout . Dalam contoh ini, tidak ada output. Namun, jika anda keliru, anda selalu dapat memeriksa apakah perintah itu berjaya.

$membuang $?

Nilai adalah 2 kerana arahan menghasilkan banyak kesalahan.

Sekiranya anda cenderung melupakan deskriptor fail stdout dan stderr , arahan berikut akan berlaku dengan baik. Ini adalah format arahan sebelumnya yang lebih umum. Kedua-duanya stdout dan stderr akan dialihkan ke / dev / null.

$cengkaman -rhello/sys/ &> /penipu/batal

Contoh lain

Ini yang menarik. Ingat alat dd? Ini adalah alat yang kuat untuk menukar dan menyalin fail. Ketahui lebih lanjut mengenai dd. Dengan menggunakan dd, kita dapat menguji kelajuan membaca berurutan cakera anda. Sudah tentu, ini bukan ukuran yang tepat. Namun, untuk ujian pantas, sangat berguna.

$dd sekiranya=<besar_file> daripada=/penipu/batalstatus= kemajuanbs= 1Miflag= langsung

Di sini, saya telah menggunakan ISO Ubuntu 18.04.4 sebagai fail besar.

Begitu juga, anda juga dapat menguji kelajuan muat turun sambungan internet anda.

$wget -OR /penipu/batal<pautan_file besar>

Pemikiran terakhir

Mudah-mudahan, anda mempunyai pemahaman yang jelas mengenai apa fail / dev / null ini. Ini adalah peranti khas yang, jika ditulis, dibuang dan jika dibaca, dibaca tidak ada. Potensi sebenar ciri menarik ini terdapat dalam skrip bash yang menarik.

Adakah anda berminat dengan skrip bash? Lihatlah panduan pemula untuk skrip bash .

Selamat mencuba!