Apa sih Maksud dari 1>/dev/null 2>&1 di GNU/Linux?


Banyak hal-hal baru yang bikin pusing jika kamu baru di dunia GNU/Linux. Salah satunya adanya simbol-simbol dalam perintah tertentu.

Jika kamu pernah bertemu skrip seperti ini:

$ grep -i 'abc' content 1>/dev/null 2&>1

Kamu mungkin akan bingung kenapa ada angka 1 dan 2 ? Lalu kenapa ada simbol > dan &? Dan apa itu /dev/null mengapa harus ditulis?

Kalau kamu ingin tau lebih, coba kamu buka terminal-mu dan jalankan perintah ini:

$ grep -i 'abc' content

Apa yang akan terjadi? Ya terminal akan memberikan output:

grep: content: No such file or directory

Nah perintah di atas kita gak mau munculin di layar, maka tambahkan 2 >/dev/null jadi seperti ini:

$ grep -i 'abc' content 2 >/dev/null

Nah pesan galat di atas gak muncul lagi kan? Kenapa bisa begitu? Berikut ini penjelasannya.

Penjelasan

Jadi setiap proses yang dijalankan di Unix dalam hal ini GNU/Linux wajib mendukung paling tidak tiga common descriptors yang didefinisikan oleh aplikasi POSIX.

Adapun tiga common descriptors itu adalah:

Nilai Nama Disingkat
0 Standard Input Stdin
1 Standard Output Stdout
2 Standard Error Stderr

Kemudian untuk simbol-simbol di atas:

Simbol Makna
> Meruskan perintah untuk dijadikan berkas
/dev/null Adalah berkas jika dikirim ke sini akan selalu kosong atau semua pesan akan diabaikan
& Adalah simbol untuk file descriptor. Tanpa menulis ini maka perintah setelah > akan dianggap berkas

Nah jadi kalau ada perintah seperti ini.

$ grep -i 'abc' content 1>/dev/null 2&>1

Artinya kamu menjalankan aplikasi grep jika ia mengeluarkan pesan (stdout) maka ia harus ditulis ke /dev/null jika ada pesan galat (stderr) maka akan dikembalikan lagi ke stdin. Jadi pesan galatnya pun terabaikan.