Di dunia Linux atau macOS, /dev/null adalah seperti lubang hitam bagi data. Apapun hasil yang di-pipe ke situ akan hilang tanpa bekas.

echo "hello world"
# => hello world

echo "hello world" > /dev/null
# kosong, tidak menampilkan apapun

Menggunakan > /dev/null 2>&1 akan mengarahkan semua output (baik stdout maupun stderr) ke /dev/null, sehingga tidak dicetak ke terminal.

Jadi standar input, output, dan error pada shell:

  • stdin => fd 0 (default)
  • stdout => fd 1 (default)
  • stderr => fd 2 (default)

Saat menjalankan perintah > /dev/null, maka:

  • stdin => fd 0 (tetap)
  • stdout => dialihkan ke /dev/null
  • stderr => fd 2 (tetap)

Kemudian 2>&1 /dev/null akan mengarahkan:

  • stdin => fd 0 (tetap)
  • stdout => tetap /dev/null
  • stderr => dialihkan ke stdout

File descriptor (fd) adalah handle unik yang mengarah pada suatu file atau resource lain di sistem operasi. Setiap proses memiliki akses ke fd 0 (stdin), fd 1 (stdout), dan fd 2 (stderr) sebagai cara untuk membaca dan menulis ke suatu resource.

Referensi: redirecting to /dev/null