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.