Ketika Anda menjalankan:
ping -q -c 1 google.com > /dev/null && echo online || echo offline
Anda pada dasarnya hanya mengarahkan output dari Stream 1 (yaitu stdout
) ke /dev/null
.
Ini bagus ketika Anda ingin mengarahkan output yang dihasilkan oleh eksekusi normal suatu program. Namun, jika Anda juga ingin mengarahkan ulang output yang disebabkan oleh semua kesalahan, peringatan atau kegagalan, Anda juga harus mengarahkan ulang stderr
atau Standard Error stream ke /dev/null
.
Salah satu cara melakukan ini adalah dengan menambahkan jumlah aliran yang ingin Anda alihkan ke operator pengalihan, >
seperti ini:Command 2> /dev/null
Karenanya, perintah Anda akan terlihat seperti:
ping -q -c 1 google.com > /dev/null 2> /dev/null && echo online || echo offline
Namun, perhatikan bahwa kami telah mengalihkan satu aliran ke /dev/null
. Mengapa tidak hanya dukung-dukungan pada pengalihan yang sama? Bash memungkinkan kami melakukan ini dengan menentukan nomor aliran yang akan dialihkan. 2>&1
.
Perhatikan &
karakter setelah operator pengalihan. Ini memberitahu shell bahwa apa yang muncul berikutnya bukan nama file, tetapi pengidentifikasi untuk aliran output.
ping -q -c 1 google.com > /dev/null 2>&1 echo online || echo offline
Hati-hati dengan operator pengalihan, pesanan mereka sangat berarti. Jika Anda mengarahkan ulang dalam urutan yang salah, Anda akan berakhir dengan hasil yang tidak terduga.
Cara lain di mana Anda dapat mencapai keheningan total adalah dengan mengarahkan ulang semua aliran keluaran untuk /dev/null
menggunakan pintasan ini: &>/dev/null
(atau redirect ke file log dengan &>/path/to/file.log
).
Maka, tulis perintah Anda sebagai:
ping -q -c 1 google.com &> /dev/null && echo online || echo offline
&>/dev/null
itu. Terima kasih atas bantuan seketika!