GNU/Linux >> Belajar Linux >  >> Linux

/dev/null di Linux

/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

Linux
  1. Cara membuat kata sandi acak di linux menggunakan /dev/random

  2. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  3. Apakah>&- Lebih Efisien Daripada>/dev/null?

  1. Linux – Bagaimana Cara Membuat /dev/null?

  2. Cara menjalankan file sh dari file sh lain

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  2. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  3. Apakah ada direktori yang setara dengan /dev/null di Linux?