Redirect stderr - Linux

Table of Contents

dir=$(mktemp -p "${TMPDIR:-.}" -d dir-XXXX) || exit 1
fifo=$dir/fifo
mkfifo "$fifo"
pid=$$
echo $pid > $dir/pid
dd if=$fifo bs=1 | tee /proc/$pid/fd/1 >$dir/logfile&
#dd if=$fifo bs=1 | tee /proc/$pid/fd/1& >$dir/logfile&
#原文上面多了一個&
#送回stderr的process
exec 2>$fifo
#這一行會吧stderr會送出去
#可是bash的回應(像是PS1)也是走stderr,所以要有別的process把他送回來

接下來就看你回不要把bash的回應除掉囉
要不然還有一個方法:用readline的inputrc,
"\r":" "2>/logfile\C-o"
可是會把行的內容留在下一次的prompt
我不知到inputrc有沒有像vi一樣的noremap
至少"\r":"xxxx\r"是無窮迴圈

--

All Comments

Olga avatarOlga2012-07-25
再次謝謝K大的指教:)
Mia avatarMia2012-07-29
再請教K大一下,請問您寫的內容要如何使用呢?
Olga avatarOlga2012-07-30
是line by line輸入嗎?還是將內容儲存成.sh檔案?
Donna avatarDonna2012-07-31
我資質駑鈍,目前還無法理解您所寫的內容以及如何使用
George avatarGeorge2012-08-01
昨天犯了一個超冏的錯誤,把測試用的bind範列直接寫在
Valerie avatarValerie2012-08-05
.bashrc檔案裡面,搞我每次一輸入指令就會出現無效指
Quanna avatarQuanna2012-08-08
令的情況,而且也無法開啟.bashrc的內容了冏rz
Margaret avatarMargaret2012-08-12
用別的user登進去吧...