Değişiyor stdout
ve stderr
.
>name
çıktıyı dosyaya yönlendirmek anlamına gelir name
.
>&number
çıktıyı dosya tanımlayıcısına yönlendirmek anlamına gelir number
.
Bu nedenle, &
kabuğa bir dosya tanıtıcısı demek istediğinizi söylemelisiniz, dosya adı değil.
Bir dosya tanıtıcısı, zaten açık bir dosyayı ifade eden bir sayıdır. Standart olanlar 0
standart girdi 1
için, standart çıktı için veya 2
standart hata içindir. Ayrıca, yeni bir değişken oluşturduğunuzdaki gibi, yeni bir dosya tanımlayıcısı oluşturacak başka bir numara da kullanabilirsiniz var=value
.
Varsayılan olarak, hem dosya tanımlayıcı olarak 1
ve 2
gidin /dev/tty
, böylece koşarsan somecommand 3>&1 1>&2 2>&3
yeni kabuğunda, bu (şimdi bir dosya tanıtıcı 3 var hariç) herhangi bir şey değiştirmez.
Ancak komut dosyasında daha önce bir yerde exec (eg exec 2>error.log
) kullanarak bir yeniden yönlendirme yaparsa veya komut dosyası, yeniden yönlendirme (eg ./thescript 2>error.log
) içeren bir komut satırıyla çalıştırılırsa , stdout ve stderr takas işlemi bir şey yapacaktır.
Özel bir durumda, stdout ve stderr komutunu değiştiren komut şudur dialog
. Adam sayfasına bakarken görüyorum.
Some widgets, e.g., checklist, will write text to dialog's output.
Normally that is the standard error
belki senaryoyu yazan kişi istediği dialog
'ın çıkış gitmek stdout
yerine stderr
nedense.
Ayrıca bkz : Yönlendirme sırası