Saya tahu banyak tentang ini:
$ command 2>> error
$ command 1>> output
Apakah ada cara saya bisa output stderr ke file kesalahan dan output stdout ke file output di baris yang sama bash?
Saya tahu banyak tentang ini:
$ command 2>> error
$ command 1>> output
Apakah ada cara saya bisa output stderr ke file kesalahan dan output stdout ke file output di baris yang sama bash?
Jawaban:
Cukup tambahkan mereka dalam satu baris command 2>> error 1>> output
Namun, perhatikan itu >>untuk menambahkan jika file sudah memiliki data. Padahal, >akan menimpa data yang ada dalam file.
Jadi, command 2> error 1> outputjika Anda tidak ingin menambahkan.
Hanya demi selesai, Anda dapat menulis 1>sebagai hanya >karena file default descriptor adalah output. begitu 1>dan >merupakan hal yang sama.
Jadi, command 2> error 1> outputmenjadi,command 2> error > output
command &2>err.log, saya pikir saya benar-benar membingungkan sintaksis. (Tautan ke jawaban yang tepat dari semua bash pipe-isme mungkin sudah beres)
command &2>err.logtidak cukup sah - ampersand dalam sintaks yang digunakan untuk deskriptor file sebagai target, misalnya command 1>&2akan mengubah rute stdout ke stderr.
Coba ini:
your_command 2>stderr.log 1>stdout.log
Angka 0melalui 9adalah deskriptor file dalam bash.
0singkatan dari input standar, 1singkatan dari output standar, 2singkatan dari standard error. 3melalui 9adalah cadangan untuk penggunaan sementara lainnya.
Deskriptor file apa pun dapat dialihkan ke file atau deskriptor file lain menggunakan operator >. Anda bisa menggunakan operator >>untuk menambahkan file daripada membuat yang kosong.
Pemakaian:
file_descriptor > filename
file_descriptor > &file_descriptor
Silakan merujuk ke Panduan Bash-Scripting Lanjutan: Bab 20. I / O Redirection .
Seperti itu:
$ command >>output 2>>error
Atau jika Anda ingin mencampur output (stdout & stderr) dalam satu file tunggal, Anda mungkin ingin menggunakan:
command > merged-output.txt 2>&1
Output beberapa perintah 'dapat diarahkan. Ini berfungsi baik untuk baris perintah atau paling berguna dalam skrip bash. The -smengarahkan password prompt untuk layar.
Stdout / stderr cmds Hereblock dikirim ke file terpisah dan tidak ada yang ditampilkan.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Stdout / stderr cmds Hereblock dikirim ke satu file dan tampilan.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Stdout / stderr cmds Hereblock dikirim ke file terpisah dan stdout untuk ditampilkan.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
Tergantung pada siapa Anda (whoami) dan nama pengguna, kata sandi mungkin diperlukan atau tidak diperlukan.
1>dapat ditulis sebagai>