Intereting Posts
SVN добавляет скрытые файлы и фиксирует их через скрипт bash Замечания Strip #xxx, за исключением случаев, когда они встречаются внутри кавычек в sed Поиск последнего символа имени базового файла Отображение стандартного вывода фонового процесса в определенном месте терминала Уменьшить длину определенного столбца в текстовом файле с разделителями KDE отключает звуки рабочих столов, которые не просматриваются Как ограничить доступ к Интернету для определенного пользователя на LAN с помощью iptables в Linux Как создать отдельный раздел usr во время установки арки? скрипт ffmpeg – разрезание видео на несколько фрагментов Настройка 4-интерфейса Shorewall Как обеспечить пароль безопасным способом для семени LDAP? Работа Crontab не отправляется по электронной почте при неудаче Услуги автозапуска после аварии в rhel 6 Отчеты каталогов с содержимым, которое существует в другом месте, даже если они разбросаны Терминалы «Unbusy», которые будут выведены из системы, когда TMOUT достигнут

Имитация оболочки оболочки GNU в tmux

Я пытаюсь имитировать функцию shelltitle GNU Screen в tmux. В моем ~/.bashrc есть следующее:

 if [[ "$TERM" == screen* ]]; then SCREEN_ESC='\[\ek\e\\\]' else SCREEN_ESC='' fi PS1="\n\w ${SCREEN_ESC}$ " 

и следующее в моем ~/.screenrc :

 shelltitle "$ |bash" 

Установка shelltitle делает GNU Screen для поиска новой строки в оболочке и отбрасывает все символы от $PS1 до escape-символа и заменяет его первым найденным после него словом. Это более четко объясняется на странице руководства:

Вот как это работает: вы должны изменить приглашение командной строки для вывода нулевой последовательности-escape-последовательности (<esc> k <esc>) в качестве части вашего приглашения. Последняя часть вашего приглашения должна быть такой же, как строка, указанная для части поиска заголовка. Как только это настроено, на экране будет использоваться последовательность escape-последовательности заголовка, чтобы очистить предыдущее имя команды и подготовиться к следующей команде. Затем, когда новая строка получена из оболочки, выполняется поиск в конце подсказки. Если он найден, он будет захватывать первое слово после строки и будет использовать его в качестве имени команды. Если имя команды начинается с экрана «!», «%» Или «^», то первое слово в следующей строке (если найдено) будет использоваться в качестве предпочтительного имени.

Это отличается от set-option -g set-titles on tmux set-option -g set-titles on которых только фиксируется имя процесса. Таким образом, скрипт script.py на Python будет называться как script.py на экране (который так мне нужен), тогда как он будет называться как python в tmux (чего я не хочу).

Я знаю, что можно переименовать окна tmux :

 printf '\033kWINDOW_NAME\033\\' 

Поэтому мне было интересно, есть ли какой-то способ, которым я могу альтернативно позволить tmux знать, что я ввел новую команду. Если есть какой-то способ, я могу PROMPT_COMMAND команду, я мог бы использовать PROMPT_COMMAND Bash для этого. Есть идеи?