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 null 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 panduan mendalam ini mengenai stdin, stderr, dan stdout.
Mari kita cepat menyegarkan. 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.
$ gema "Hello World"
Perintah seterusnya akan menunjukkan kepada kita status keluar dari arahan yang dijalankan sebelumnya.
$ bergema $?
Seperti 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$ bergema $?
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 deskriptor fail. Sekiranya tidak dinyatakan, bash akan digunakan stdout secara lalai.
$ echo "Hello World"> log.txt
Perintah berikut akan mengarahkan semula stderr ke fail teks.
ralat $ asdfadsa 2>.txt
Menggunakan / dev / null
Mengalihkan output ke / dev / null
Sekarang, kami sudah sedia 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".
$ grep -r hello / sys /
Namun, ia akan menghasilkan banyak kesalahan kerana tanpa hak root, grep tidak dapat mengakses sejumlah fail. Dalam kes seperti itu, akan mengakibatkan kesalahan "Izin ditolak". Sekarang, dengan menggunakan pengalihan, kita dapat memperoleh output yang lebih jelas.
$ grep -r hello / sys / 2> / dev / null
Hasilnya kelihatan lebih baik, betul? Tidak ada! Dalam kes ini, grep tidak memiliki akses ke banyak file dan file yang dapat diakses tidak memiliki string "hello".
Dalam contoh berikut, kami akan melakukan ping ke Google.
$ ping google.com
Namun, kami tidak mahu melihat semua hasil ping yang berjaya. Sebaliknya, kami hanya ingin memfokuskan kesalahan ketika ping tidak dapat menjangkau Google. Bagaimana kita melakukannya?
$ ping google.com 1> / dev / null
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.
$ grep -r hello / sys /> / dev / null 2> & 1
Mari melanggar 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 arahan itu berjaya.
$ bergema $?
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.
$ grep -r hello / sys / &> / dev / null
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. Walau bagaimanapun, untuk ujian pantas, ia cukup berguna.
$ dd jika =
Di sini, saya telah menggunakan Ubuntu 18.04.4 ISO sebagai fail besar.
Begitu juga, anda juga dapat menguji kelajuan muat turun sambungan internet anda.
$ wget -O / dev / null
Pemikiran terakhir
Mudah-mudahan, anda mempunyai pemahaman yang jelas tentang apa fail / dev / null ini. Ini adalah peranti khas yang, jika ditulis, dibuang dan jika dibaca, dibaca sia-sia. Potensi sebenar ciri menarik ini terdapat dalam skrip bash yang menarik.
Adakah anda berminat dengan skrip bash? Lihat panduan pemula untuk skrip bash.
Nikmati!