Saya ingin penjelasan singkat tentang baris perintah berikut:
grep -i 'abc' content 2>/dev/null
command-line
bash
redirect
stdout
Naif
sumber
sumber
> /dev/null 2>&1
dan&> /dev/null
2>&1
sintaks yang lebih tua sehingga&>
tidak akan bekerja bertahun-tahun yang lalu tetapi keduanya setara.Singkatnya, pengalihan
stderr
(fd 2) ke lubang hitam (membuang output dari perintah).Beberapa kasus penggunaan yang lebih umum untuk pengalihan:
Jalankan
command
di latar belakang, buangstdout
danstderr
Jalankan
command
dan tambahkan stdout dan stderr ke file log.Di Bash 4+, formulir yang lebih pendek (tapi kurang bisa dibaca) berfungsi
sumber
> /dev/null 2>&1
bukan&> /dev/null
?&>
baru di Bash 4, yang pertama hanya cara tradisional, saya sudah terbiasa (mudah diingat).&> /dev/null
mungkin tidak berfungsi di beberapa shell tetapi> / dev / null 2> & 1 akan bekerja di semua shell yang kompatibel dengan POSIX.fn>target
, di manafn
nomor file (0-2 biasanya, beberapa program menentukan lebih banyak angka) dantarget
biasanya nama file tetapi di sini adalah nomor file lain - diawali dengan&
yang merupakan sintaks untuk "Saya ingin jumlah file bukan nama file"./dev/null
diperlakukan sebagai lubang hitam di Linux / Unix, sehingga Anda dapat memasukkan apa saja ke dalam ini tetapi Anda tidak akan bisa mendapatkannya kembali/dev/null
.Selanjutnya,
2>
berarti bahwa Anda mengarahkan ulang (yaitu>
) stderr (yaitu2
) ke dalam lubang hitam (yaitu/dev/null
)Perintah Anda adalah:
Jangan coba akhiri dengan garis miring lain seperti ini -
2>/dev/null/
(ini bukan direktori).sumber
konten grep -i 'abc' akan menghasilkan output yang ditampilkan di konsol Anda, termasuk kesalahan apa pun.
Menentukan
2>/dev/null
akan menyaring kesalahan sehingga tidak akan keluar ke konsol Anda.Secara lebih rinci: 2 mewakili deskriptor kesalahan, yang merupakan tempat penulisan kesalahan. Secara default mereka dicetak pada konsol.
\>
mengalihkan output ke tempat yang ditentukan, dalam hal ini/dev/null
/dev/null
adalah perangkat Linux standar tempat Anda mengirim keluaran yang ingin Anda abaikan.sumber