как я могу установить заголовок окна 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 в 03:37

2 ответа

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

sudo apt-get install xtitle
lastcmd() { xtitle $(history 1 | cut -c8-); }
PROMPT_COMMAND=lastcmd
1
ответ дан 25 May 2018 в 15:12

Использование только стандартных команд

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

Timestamp

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

1
ответ дан 25 May 2018 в 15:12
  • 1
    Значит, я поместил это в свой .bashrc, правильно? – jcollum 17 January 2012 в 23:14
  • 2
    Нет, я добавил это к моему bashrc и начал новый терминал, и я получил это в своем приглашении: ]0;echo -ne ""]2;reload]1;reload~> , а мой заголовок окна - cut -c8-. Вот как это выглядит, когда я запускаю терминал. Извините, это не сработало. – jcollum 17 January 2012 в 23:18
  • 3
    Правильно: ~/.bashrc - хорошее место для этого. Hummm ... это отлично работает для меня на Lubuntu10.10 / bash дома и на моем PuTTY / bash на работе. Можете ли вы предоставить часть своих ~ / .bashrc и $PS1, $PS2, $PS3 и $PS4? (вы можете изменить свой вопрос). Затем я могу протестировать на своем компьютере. Приветствия. – olibre 18 January 2012 в 03:43
  • 4
    @jcollum Я могу проверить на своем компьютере, но мне нужно быть как можно ближе к вашему окружению. Поэтому, пожалуйста, предоставьте некоторую информацию в качестве переменных .bashrc и PSx. Приветствия. – olibre 19 January 2012 в 03:11
  • 5
    @olibre У меня есть работа для локальных терминалов, есть ли способ использовать это с удаленными ssh-соединениями тоже? В то время как я работаю на удаленном сервере-разработчике, я часто заканчиваю журналы ошибок, но есть несколько файлов журнала, я хочу видеть, какой файл im хвост в строке заголовка. – Chris 11 November 2017 в 19:34

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

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