Kyle'ın Unix / Linux komutu, STDERR'yi STDOUT ile değiştirmeyi; ancak açıklama pek doğru değil. Yönlendirme operatörleri herhangi bir kopyalama veya kopyalama yapmazlar, sadece akışı farklı bir yöne yönlendirirler.
Kyle'ın komutunu 3> & 1'i geçici olarak hareket ettirerek yeniden yazmak, kavramı anlamayı kolaylaştırır:
find /var/log 1>&2 2>&3 3>&1
Bu şekilde yazılmış olsa da, Linux bir hata gösterecektir çünkü & 3 henüz 3> & 1'den önce olduğu gibi mevcut değildir. 3> bir şey üçüncü bir boru kullanacağımızı ilan etmenin (tanımlamanın) bir yoludur, bu yüzden suya o boruya akmadan önce, örneğin Kyle'ın yazdığı şekilde yerleştirilmesi gerekir. Sadece eğlence için bu diğer yolu deneyin:
((echo "STD1"; anyerror "bbbb"; echo "STD2" ) 3>&1 4>&2 1>&4 2>&3) > newSTDOUT 2> newSTDERR
Kopya yapmanın bir yolu olmamak utanç verici. Aynı komutta "3> & 1 3> & 2" gibi şeyler yapamazsınız, çünkü Linux yalnızca birincisini kullanır ve ikinciyi reddeder.
(Henüz) hem hatayı hem de normal çıktısını bir dosyaya göndermenin bir yolunu bulamadım ve ayrıca bir komut ile hatanın bir kopyasını standart çıktıya gönderdim. Denemek için, her iki çıktının da (hata ve standart) bir günlük dosyasına gitmesini ve hatanın blackBerry'ime gönderilen bir e-posta iletisini göndermesini istiyorum. "Tee" kullanarak iki komutla yapabilirim ancak hata dosyadaki normal çıktı satırı arasında doğru sırada gösterilmiyor. Sorunu çözdüğümün çirkin yolu:
((echo "STD1"; sdfr "bbbb"; echo "STD2" ) 3>&1 1>&2 2>&3 | tee -a log1 ) 2>> log1
Log1'i iki kez kullanmam gerektiğini ve her iki durumda da, "tee" komutu için "-a" seçeneğini ve ikincisini ">>" kullanarak kullandığını belirtmeliyim.
Bir kedi günlüğü1 yaparak aşağıdakileri elde edersiniz:
STD1
STD2
-bash: sdfr: command not found
İkinci satırda hatanın olması gerektiği gibi görünmediğine dikkat edin.