GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengarahkan stderr ke stdout di Bash

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.


Linux
  1. Cara mengarahkan output ke file dan stdout

  2. Bagaimana cara mengurai file CSV di Bash?

  3. Bagaimana cara memeriksa syslog di Bash di Linux?

  1. Redirect semua output ke file di Bash

  2. Bagaimana cara memeriksa apakah suatu file kosong di Bash?

  3. Bagaimana cara mengarahkan output dari system() ke file?

  1. Cara mengarahkan output dari layanan systemd ke file

  2. Bagaimana cara mengarahkan domain ke domain lain secara lokal?

  3. bash:redirect stderr ke file dan stdout + stderr ke layar