Saya tidak jelas apa urutan terbaik untuk mengambil keduanya STDERR
dan STDOUT
menggunakan file yang sama tee
. Saya tahu bahwa jika saya ingin melakukan pipe ke file saya harus memetakan filehandle setelah redirect, yaitu
find . >/tmp/output.txt 2>&1
Ini menginstruksikan shell untuk mengirim STDOUT
ke /tmp/output.txt
dan kemudian mengirim STDERR
ke STDOUT
(yang sekarang mengirim ke /tmp/output.txt
).
Mencoba melakukan 2>&1
sebelum mengarahkan file tidak akan memiliki efek yang diinginkan.
Namun ketika saya ingin menggunakan pipa tee
seharusnya:
find . |tee /tmp/output.txt 2>&1 # or
find . 2>&1 |tee /tmp/output.txt # ?
|&
digunakan, kesalahan standar command1 terhubung ke input standar command2 melalui pipa; itu adalah singkatan2>&1 |
. Pengalihan implisit dari kesalahan standar ini dilakukan setelah setiap pengalihan ditentukan oleh perintah."stderr
danstdout
untuk memahami masalah ini. Pengalihan>
dan|
operator tee berbeda ketika mencoba untuk menangkap kedua aliran output. Untuk pengalihan saya harus./testapp > /tmp/out.log 2>&1
. Sedangkan untuk tee saya harus./testapp 2>&1 | tee /tmp/out.log
.|
biasanya disebut sebagai operator pipa.tee
merujuk hanya ke program tertentu yang sedang dipanggil di ujung pipa.