Bertukar stdout
dan stderr
.
>name
berarti mengarahkan output ke file name
.
>&number
berarti redirect output ke file descriptor number
.
Jadi &
diperlukan untuk memberitahu shell maksud Anda deskriptor file, bukan nama file.
Deskriptor file adalah angka yang merujuk ke file yang sudah terbuka. Yang standar adalah 0
untuk input standar, 1
untuk output standar atau 2
untuk kesalahan standar. Anda juga dapat menggunakan nomor lain, yang akan membuat deskriptor file baru, seperti saat Anda membuat variabel baru dengan var=value
.
Secara default, kedua file descriptor 1
dan 2
pergi ke /dev/tty
, jadi jika Anda menjalankan somecommand 3>&1 1>&2 2>&3
shell baru, itu tidak mengubah apa pun (kecuali sekarang Anda memiliki file deskriptor nomor 3).
Tetapi jika suatu tempat sebelumnya dalam skrip melakukan pengalihan menggunakan exec (misalnya exec 2>error.log
), atau skrip dijalankan dengan baris perintah termasuk pengalihan (mis. ./thescript 2>error.log
), Maka swapping stdout dan stderr akan melakukan sesuatu.
Dalam kasus spesifik Anda, perintah yang mengganti stdout dan stderr adalah dialog
. Melihat halaman manualnya , saya mengerti
Some widgets, e.g., checklist, will write text to dialog's output.
Normally that is the standard error
jadi mungkin orang yang menulis skrip itu ingin dialog
keluaran stdout
bukan stderr
karena alasan tertentu.
Lihat juga Urutan pengalihan