在bash,這給預期順序輸出:當重定向時,爲什麼Ruby的STDERR輸出會在較早的STDOUT輸出之前出現?
ruby -e "puts 'one'; raise 'two'"
one
-e:1:in `<main>': two (RuntimeError)
但是,如果我重定向STDERR到STDOUT,我得到的輸出,這是我不想之前的錯誤:
ruby -e "puts 'one'; raise 'two'" 2>&1 | cat
-e:1:in `<main>': two (RuntimeError)
one
我想將輸出重定向到一個文本文件(其行爲與上面的cat
的行爲相同),同時獲得輸出和異常,但與在終端中查看輸出時的順序相同。這可以實現嗎?
STDEER總是打印到流而STDOUT通常緩衝以進行打印。 – 2012-01-17 20:48:48