我想在长时间运行的命令(例如:)期间使用git svn fetch
从输出中获取的值来更改终端窗口的标题,同时仍写入标准输出。
使用命名管道或 tee 和 xargs 可以实现这一点吗?
我在想
git svn fetch | sed "s/^\(r\d*\).*$/ \"\\\033]0;\"\1\"\\\007\"/" | xargs -l1 echo -ne
基于:http://tldp.org/HOWTO/Xterm-Title-3.html
更新:
让它工作就足够了:
(echo "r9" ; echo "r10") | sed "s/^\(r\d*\).*$/ \"\\\033]0;\"\1\"\\\007\"/" | xargs -l1 echo -ne
更新 2:
这几乎满足了我的要求。我看到了 r10,但没有看到 r9:
(echo "r9" ; sleep 1 ; echo "r10") | sed "s/^\(r[0-9]*\)\.*$/\\\033]0;\1\\\007/" | xargs -0 echo -ne
答案1
我没有完整的答案,但一种方法是tee
将 git 的输出发送到另一个脚本和标准输出。例如:
$ git svn fetch | tee grepping-and-prompt-changing-script.sh
这里有一些例子: