Bagaimana dengan ini:
./script 3>&1 1>/dev/null 2>&3 | ./other-script
Idenya adalah untuk "mencadangkan" deskriptor stdout, menutup stdout asli, lalu mengarahkan strerr ke stdout yang disimpan.
Ini sangat mirip dengan solusi yang diberikan oleh geirha, tetapi lebih eksplisit (bash coding dapat dengan mudah menjadi sangat kabur).
Anda ingin
./script 2>&1 1>/dev/null | ./other-script
Urutan di sini penting. Mari kita asumsikan stdin (fd 0), stdout (fd 1) dan stderr (fd 2) semuanya terhubung ke tty pada awalnya, jadi
0: /dev/tty, 1: /dev/tty, 2: /dev/tty
Hal pertama yang disiapkan adalah pipa. stdin skrip lain terhubung ke pipa, dan stdout skrip terhubung ke pipa, jadi deskriptor file skrip sejauh ini terlihat seperti:
0: /dev/tty, 1: pipe, 2: /dev/tty
Selanjutnya terjadi pengalihan, dari kiri ke kanan. 2>&1
membuat fd 2 pergi ke mana pun fd 1 saat ini pergi, yaitu pipa.
0: /dev/tty, 1: pipe, 2: pipe
Terakhir, 1>/dev/null
mengalihkan fd1 ke /dev/null
0: /dev/tty, 1: /dev/null, 2: pipe
Hasil akhirnya, stdout skrip dibungkam, dan stderr dikirim melalui pipa, yang berakhir di stdin skrip lain.
Lihat juga http://bash-hackers.org/wiki/doku.php/howto/redirection_tutorial
Perhatikan juga bahwa 1>/dev/null
identik dengan, tetapi lebih eksplisit daripada >/dev/null