Jawaban:
> Operator mengalihkan hasil biasanya ke file tetapi bisa ke perangkat. Anda juga dapat menggunakan >> untuk menambahkan.
Jika Anda tidak menentukan angka maka aliran output standar diasumsikan tetapi Anda juga dapat mengarahkan kesalahan
> file
pengalihan stdout ke file
1> file
pengalihan stdout ke file
2> file
pengalihan stderr ke file
&> file
pengalihan stdout dan stderr ke file
/dev/null
adalah perangkat nol yang mengambil input apa pun yang Anda inginkan dan membuangnya. Dapat digunakan untuk menekan output apa pun.
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:
command > /dev/null 2>&1 &
Jalankan command
di latar belakang, buang stdout
danstderr
command >> /path/to/log 2>&1 &
Jalankan command
dan tambahkan stdout dan stderr ke file log.
Di Bash 4+, formulir yang lebih pendek (tapi kurang bisa dibaca) berfungsi
command &>> /path/to/log
> /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 mana fn
nomor file (0-2 biasanya, beberapa program menentukan lebih banyak angka) dan target
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 (yaitu 2
) ke dalam lubang hitam (yaitu /dev/null
)
Perintah Anda adalah:
grep -i 'abc' content 2>/dev/null
Jangan coba akhiri dengan garis miring lain seperti ini - 2>/dev/null/
(ini bukan direktori).
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.
> /dev/null 2>&1
dan&> /dev/null