Saat mengarahkan output perintah ke file atau menyalurkannya ke perintah lain, Anda mungkin memperhatikan bahwa pesan kesalahan tercetak di layar.
Di Bash dan shell Linux lainnya, ketika sebuah program dijalankan, ia menggunakan tiga aliran I/O standar. Setiap aliran diwakili oleh deskriptor file numerik:
0
-stdin
, aliran masukan standar.1
-stdout
, aliran keluaran standar.2
-stderr
, aliran kesalahan standar.
Deskriptor file hanyalah angka yang mewakili file yang terbuka.
Aliran input memberikan informasi ke program, umumnya dengan mengetik di keyboard.
Output program masuk ke aliran input standar dan pesan kesalahan masuk ke aliran kesalahan standar. Secara default, aliran input dan error dicetak di layar.
Mengarahkan Output #
Pengalihan adalah cara untuk menangkap output dari suatu program dan mengirimkannya sebagai input ke program atau file lain.
Aliran dapat dialihkan menggunakan n>
operator, di mana n
adalah nomor deskriptor file.
Ketika n
dihilangkan, defaultnya adalah 1
, aliran keluaran standar. Misalnya, dua perintah berikut adalah sama; keduanya akan mengarahkan output perintah (stdout
) ke file.
command > file
command 1> file
Untuk mengarahkan kesalahan standar (stderr
) gunakan 2>
operator:
command 2> file
Anda dapat menulis keduanya stderr
dan stdout
ke dua file terpisah:
command 2> error.txt 1> output.txt
Untuk menekan pesan kesalahan agar tidak ditampilkan di layar, alihkan stderr
ke /dev/null
:
command 2> /dev/null
Mengalihkan stderr
ke stdout
#
Saat menyimpan keluaran program ke sebuah file, cukup umum untuk mengarahkan ulang stderr
ke stdout
sehingga Anda dapat memiliki semuanya dalam satu file.
Untuk mengalihkan stderr
ke stdout
dan memiliki pesan kesalahan yang dikirim ke file yang sama dengan keluaran standar, gunakan yang berikut ini:
command > file 2>&1
> file
mengarahkan ulang stdout
ke file
, dan 2>&1
arahkan ulang stderr
ke lokasi stdout
current saat ini .
Urutan pengalihan itu penting. Misalnya, contoh berikut hanya mengalihkan stdout
ke file
. Ini terjadi karena stderr
dialihkan ke stdout
sebelum stdout
dialihkan ke file
.
command 2>&1 > file
Cara lain untuk mengarahkan stderr
ke stdout
adalah dengan menggunakan &>
membangun. Di Bash &>
memiliki arti yang sama dengan 2>&1
:
command &> file
Kesimpulan #
Memahami konsep pengalihan dan deskriptor file sangat penting saat bekerja di baris perintah.
Untuk mengalihkan stderr
dan stdout
, gunakan 2>&1
atau &>
konstruksi.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.