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!Be careful with the redirection operators, their order matters a lot.
, tetapi Anda tidak menyertakan contoh penggunaan sebenarnya2>&1
Anda perlu mengarahkan ulang output standar (
>
atau1>
) dan kesalahan standar (2>
):atau, redirect satu ke yang lain:
sumber
Contohnya
Mempercepat ping
Tergantung pada
ping
implementasi Anda, Anda mungkin terbatas pada satu hitungan-c 1
. Beberapa implementasi akan membiarkan Anda masuk di bawah ini, tetapi Anda pada dasarnya harus menunggu waktu pencarian yang buruk hingga batas waktu. Jadi, alih-alih menggunakan,ping
Anda mungkin ingin menggunakannyafing
.lambatnya ping gagal
jari jauh lebih cepat gagal
sumber
time
perintah daripada secara manual menghitung perbedaan waktu dengandate
:time { fing -p googleadf.com > /dev/null 2>&1 && echo online || echo offline; }
date
. Lebih mudah, IMO, bagi orang lain untuk membaca output yang dihasilkan.