ben bash altında yanı stderr çoğaltılan bir komutun stdout'unu olsun isterim stderr. Bir şey gibi (0) yeniden yönlendirme ifadesidir. Mümkün mü?Kopyalama-stdout'u
cevap
Kullanım tee:
echo "FooBar" | tee /dev/stderr
veya el çoğaltma yapmak awk/perl/python kullanın:
echo "FooBar" | awk '{print;print > "/dev/stderr"}'
echo "FooBar" | perl -pe "print STDERR, $_;"
stderr'e yönlendirme için, ben >&2
veya >/dev/stderr
kullanmak. Çıktının çoğaltılması için tee
kullanırdım. Bunun dezavantajı geçici dosya gerektiği yönünde:/dev/stderr'e ile
echo "FooBar" | tee /tmp/stdout >&2 ; cat /tmp/stdout
kullanımı işlemi ikame: http://tldp.org/LDP/abs/html/process-sub.html
echo "FooBar" | tee >(cat >&2)
Tee bu dosyaya parametre ve çiftleri çıktı olarak bir dosya adı alır. süreç ikamesi ile yerine dosya >(cat)
sürecini kullanabilir ve >(cat >&2)
stderr bu süreçten çıkış yönlendirebilirsiniz.
Bu,/proc dosya sistemine sahip olmayan OS X gibi işletim sistemleri için iyi bir çözümdür. – Meow
echo "FooBar" |tee /dev/stderr
tee: /dev/stderr: Permission denied
RedHat 6,3
echo "FooBar" | (read A ; echo $A ; echo $A >&2)
Üzgünüm, açıklama eklendi ;-) – defdefred
See çalışıyor ile çalışmıyor [Birden komutlara stdout'u gönderebilir nasıl?] (Http://unix.stackexchange.com/questions/28503/nasıl-can-ı-send-stdout-to-çoklu komutları) –