Как я могу установить заголовок окна bash для последней команды, которая запустилась?

Мне бы хотелось, чтобы в заголовке окна моего терминала отображалась последняя команда, которая была выполнена. Было бы удобно найти терминал, на котором запущен Mongrel, в Dev / Test / Prod и т. Д. (Для тестирования приложений rails).

Я попробовал этот код:

if [ "$SHELL" = '/bin/bash' ]
then
    case $TERM in
         rxvt|*term)
            set -o functrace
            trap 'echo -ne "\e]0;$BASH_COMMAND\007"' DEBUG
            #  export PS1="\e]0;$TERM\007$PS1"
         ;;
    esac
fi

По крайней мере, я думаю, что это код, который я пробовал. Это сработало, но вызвало какое-то странное поведение, например, заголовки окон, которые застревали в цикле, пока я не нажал Ctrl C при смене каталога на символическую ссылку.

Какой надежный способ установить заголовок моего окна для последней команды, которая была выполнена?

5
задан 14 January 2012 в 01:37

2 ответа

Вы также можете использовать инструмент xtitle:

sudo apt-get install xtitle
lastcmd() { xtitle $(history 1 | cut -c8-); }
PROMPT_COMMAND=lastcmd
0
ответ дан 14 January 2012 в 01:37

Только Используя стандартные команды

lastcmd() { LASTCMD=$(history 1 | cut -c8-); echo -ne "\e]2;$LASTCMD\a\e]1;$LASTCMD\a"; }
PROMPT_COMMAND=lastcmd

Протестируйте его

echo 'This echo command should be displayed on my window title'

Метка времени

Чтобы также отобразить время последней команды установите переменную среды HISTTIMEFORMAT:

HISTTIMEFORMAT=%c

Посмотрите man date для полного списка даты/форматов времени.

Отключить префикс метки времени на заголовке окна:

unset HISTTIMEFORMAT

Персистентность

Хорошее место для помещения этих двух строк находится в Вашем ~/.bashrc

1
ответ дан 14 January 2012 в 01:37

Другие вопросы по тегам:

Похожие вопросы: