Saya tahu cara mengarahkan ke file, dan menggunakan tee; pada tingkat dasar. Begitu
$ alias outanderr='bash -c "echo stdout >&1; echo stderr >&2"'
# A fake "application" displaying both output and error messages.
$ outanderr 1>file # redirect stdout to a file, display stderr
stderr
$ outanderr 2>file # redirect stderr to a file, display stdout
stdout
$ outanderr 1>file 2>&1 # redirect both to a file, display nothing
$ outanderr | tee file; echo "-- file contents --" && cat file
# redirect stdout to a file, display both (note: order is messed up)
stderr
stdout
-- file contents --
stdout
$ outanderr 2>&1 | tee file; echo "-- file contents --" && cat file
# redirect both to a file, display both
stdout
stderr
-- file contents --
stdout
stderr
Pertanyaannya adalah: apa yang harus ditulis sebagai ganti tanda tanya untuk mendapatkan hasil di bawah ini:
$ outanderr ???; echo "-- file contents --" && cat file
# redirect both to a file, display stderr
stderr
-- file contents --
stdout
stderr
Kendala:
- Dengan asumsi bash.
- Pesanan harus disimpan dalam file.
- konten stderr ditampilkan dalam garis waktu nyata per baris, yaitu tanpa buffering.
- File skrip terpisah dapat digunakan.
- Sihir mungkin diperlukan.
outanderr
hanya sebuah alias yang mencetak baris ke stdout dan yang lain ke stderr. Idenya (jika memungkinkan) adalah untuk membangun solusi generik yang dapat bekerja dengan program apa pun, tanpa memodifikasi mereka.
outanderr
program yang Anda miliki?