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.