/dev/null di Linux adalah file perangkat nol. Ini akan membuang apa pun yang tertulis di dalamnya, dan akan mengembalikan EOF saat membaca.
Ini adalah peretasan baris perintah yang bertindak sebagai ruang hampa, yang menyedot apa pun yang dilemparkan ke dalamnya.
Mari kita lihat untuk memahami apa artinya, dan apa yang dapat kita lakukan dengan file ini.
/dev/null Properties
Ini akan mengembalikan End of File (EOF ) karakter jika Anda mencoba membacanya menggunakan perintah cat.
cat /dev/null
Ini adalah file yang valid, yang dapat diverifikasi menggunakan
stat /dev/null
Ini memberi saya output dari
File: /dev/null Size: 0 Blocks: 0 IO Block: 4096 character special file Device: 6h/6d Inode: 5 Links: 1 Device type: 1,3 Access: (0666/crw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-02-04 13:00:43.112464814 +0530 Modify: 2020-02-04 13:00:43.112464814 +0530 Change: 2020-02-04 13:00:43.112464814 +0530
Ini menunjukkan bahwa file ini memiliki ukuran 0 byte, memiliki nol blok yang dialokasikan untuk itu. Izin file juga disetel sehingga siapa pun dapat membaca/menulisnya, tetapi tidak dapat menjalankannya.
Karena ini bukan file yang dapat dieksekusi, kami tidak dapat menggunakan perpipaan menggunakan |
operator untuk mengalihkan ke /dev/null
. Satu-satunya cara adalah dengan menggunakan pengalihan file (>
, >>
, atau <
, <<
).
Diagram di bawah ini menunjukkan bahwa /dev/null
memang file yang valid.

Sekarang mari kita lihat beberapa kasus penggunaan umum untuk /dev/null
.
Pengalihan ke /dev/null di Linux
Kita dapat membuang output dari skrip yang kita gunakan dengan mengarahkan kembali ke /dev/null
.
Misalnya, kita dapat mencoba membuang echo
pesan menggunakan trik ini.
echo 'Hello from JournalDev' > /dev/null
Anda tidak akan mendapatkan hasil apa pun karena dibuang!
Mari kita coba menjalankan perintah dengan salah dan menyalurkan outputnya ke /dev/null
.
cat --INCORRECT_OPTION > /dev/null
Kami masih mendapatkan output seperti ini:
cat: unrecognized option '--INCORRECT' Try 'cat --help' for more information.
Mengapa ini terjadi? Ini karena pesan kesalahan berasal dari stderr
, tetapi kami hanya membuang keluaran dari stdout
.
Kita perlu mengambil stderr
diperhitungkan juga.
Buang pesan kesalahan
Mari kita redirect stderr ke /dev/null , bersama dengan stdout. Kita dapat menggunakan deskriptor file untuk stderr(=2 ) untuk ini.
cat --INCORRECT_OPTION > /dev/null 2>/dev/null
Ini akan memberi kita apa yang kita butuhkan!
Ada cara lain untuk melakukan hal yang sama; dengan mengarahkan ulang stderr ke stdout terlebih dahulu, lalu mengarahkan ulang stdout ke /dev/null .
Sintaks untuk ini adalah:
command > /dev/null 2>&1
Perhatikan 2>&1
pada akhirnya. Kami mengalihkan stderr(2 ) ke stdout(1 ). Kami menggunakan &1
untuk menyebutkan ke shell bahwa file tujuan adalah deskriptor file dan bukan nama file.
cat --INCORRECT_OPTION > dev/null 2>&1
Jadi jika kita menggunakan 2>1
, kami hanya akan mengalihkan stderr
ke file bernama 1
. Ini bukan yang kami inginkan!
Kesimpulan
Mudah-mudahan, ini sedikit memperjelas, sehingga Anda sekarang dapat menggunakan /dev/null di Linux, mengetahui apa artinya! Jangan ragu untuk mengajukan pertanyaan di bagian komentar di bawah.
Referensi
- Pertanyaan StackOverflow