Tulis output perintah ke file dan std out / error

0

Saya punya perintah yang saya jalankan banyak yang saya ingin mengarahkan output ke file. Saya melakukan ini seperti ini:

runFooBar > output.txt 2>&1

Apakah ada cara saya bisa menulis output runFooBar ke file output.txt sementara masih bisa melihat output dalam standard out / error saat perintah sedang berjalan?

Saya menjalankan ini pada mesin Linux dan OS X.

Nosrettap
sumber

Jawaban:

3

Gunakan perintah "tee".

echo hi | tee ./file.txt

Perintah "tee" mengambil input standar dan mengarahkannya ke file yang ditentukan dan standar keluar. Ini disebut 'tee' setelah t-berbentuk persimpangan di pipa (perpipaan).

Tn. Minty Fresh
sumber
Apakah ini akan menulis dan mencetak kesalahan std dan std out? Jika tidak, bagaimana saya melakukannya?
Nosrettap
Berpotensi Anda bisa menggunakan tee dua kali; cukup gunakan perintah tee kedua untuk mem-pipe standar ke standard error.
Tn. Minty Fresh
1

Cara untuk mengarahkan output standar dan kesalahan standar ke file yang sama adalah:

echo Hello 2>&1 | tee some_file.txt

Ini akan menempatkan keduanya di file yang sama. Anda mungkin ingin meletakkannya di file terpisah . Anda dapat mencapai bahwa fitur Bash, proses substitusi , sebagai berikut:

echo Hello > >(tee standard_output.txt) 2> >(tee standard_error.txt >&2)
MariusMatutiae
sumber