обновить заголовок терминала из стандартного вывода длительной команды?

432
Sam Hasler

Я хотел бы изменить заголовок окна терминала во время длительной команды (например git svn fetch:) со значениями, извлеченными из вывода, в то же время записывая в стандартный вывод.

Возможно ли это использовать именованные каналы или тройник и 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 
0

1 ответ на вопрос

0
Peter Jenkins

У меня нет полного ответа, но одним из подходов было бы использовать teeотправку вывода из git в другой скрипт и стандартный вывод. Что-то вроде:

$ git svn fetch | tee grepping-and-prompt-changing-script.sh 

Вот несколько примеров:

http://linux.101hacks.com/unix/tee-command-examples/