Anda dapat menggunakan trik berikut untuk menukar stdout dan stderr. Kemudian Anda hanya menggunakan fungsi pipa biasa.
( proc1 3>&1 1>&2- 2>&3- ) | proc2
Disediakan stdoutdanstderr keduanya menunjuk ke tempat yang sama di awal, ini akan memberi Anda apa yang Anda butuhkan.
Apa yang dilakukan x>ybit adalah mengubah pegangan file xsehingga sekarang mengirimkan informasinya ke tempat pegangan file ysaat ini menunjuk. Untuk kasus khusus kami:
3>&1membuat pegangan baru3 yang akan menampilkan pegangan saat ini1 (stdout asli), hanya untuk menyimpannya di suatu tempat untuk poin terakhir di bawah.
1>&2memodifikasi pegangan 1(stdout) menjadi keluaran ke pegangan saat ini2 (stderr asli).
2>&3-memodifikasi pegangan 2(stderr) menjadi keluaran ke pegangan saat ini3 (stdout asli) kemudian menutup pegangan 3(melalui -di akhir).
Ini secara efektif adalah perintah swap yang Anda lihat dalam algoritma pengurutan:
temp = value1;
value1 = value2;
value2 = temp;
rc, yang merupakan shell lain. Misalnya:proc1 |[2] proc2. Bukankah itu bagus? Tapi tidakbash.