Pengurusan fail

Apa itu / dev / null dan Cara Menggunakannya

Apa itu / dev / null dan Cara Menggunakannya
Linux adalah sistem operasi yang menarik yang menghoskan beberapa peranti maya untuk pelbagai tujuan. Sejauh program yang dijalankan 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 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 = of = / dev / null status = progress bs = 1M iflag = langsung

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!

Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...
Distro Linux Terbaik untuk Permainan pada tahun 2021
Sistem operasi Linux telah jauh dari tampilan asal, ringkas dan berasaskan pelayan. OS ini telah berkembang pesat dalam beberapa tahun kebelakangan in...