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

Во время моей повседневной работы я держу много терминальных вкладок. Поэтому, чтобы определить их, я задал названия

Вкладка терминала> Задать заголовок

  • Повторно открыть последнюю закрытую вкладку в терминале gnome?
  • Как переименовать заголовок терминала в терминале gnome?
  • Запуск истинных нескольких экземпляров процесса gnome-terminal
  • Откройте окно терминала Gnome и выполните 2 команды
  • Как перенастроить контент при изменении размера gnome-терминала?
  • Почему `clear` не очищает весь экран?
  • например, IRC, API Codebase, API Logs, Server1 и т. д.

    Я хочу сделать что-то на вкладке, основываясь на заголовке вкладки. например

    1. Когда я устанавливаю «API Codebase», он должен перейти к моей кодовой базе и активировать соответствующую виртуальную среду python
    2. Когда я устанавливаю «IRC», он должен запускать irssi
    3. Когда я устанавливаю «Server1», он должен запустить команду ssh для подключения к серверу

    и так далее.

    Как это может быть сделано?

  • Vim в Gnome-terminal говорит: «Выход не к терминалу»
  • Как использовать файл терминов / цветов
  • Не интерпретировать возврат каретки (`\ 0D`) в моем терминале
  • Почему «echo $ 0» дает разные результаты для двух разных терминалов?
  • Анимация внутри терминала с эвакуационными кодами
  • Не удается открыть окно терминала
  • 2 Solutions collect form web for “Как запустить скрипт, когда заголовок установлен на вкладку терминала?”

    Я бы сделал это несколько иначе. Вместо ручной настройки заголовка вкладки создайте функцию, которая устанавливает заголовок и запускает нужную команду. Добавьте эту функцию (адаптированную отсюда ) к вашему ~/.bashrc (если вы используете bash):

     function set-title() { if [[ -z "$ORIG" ]]; then ORIG=$PS1 fi TITLE="\[\e]2;$@\a\]" ## Do different things depending on the string passed case "$@" in "API Codebase") echo cd ~/codebase echo python ... ;; "IRC") echo irssi ;; "Server1") echo ssh server1 ;; esac PS1="${ORIG}${TITLE}" } 

    Насколько я знаю, невозможно проверить состояние терминала из процесса в оболочке.

    Но даже если бы вы могли, изменение поведения на основе названия терминала было бы очень подверженным ошибкам. Нет простого способа проверить наличие орфографических ошибок или что-то в этом роде. Это также не очень масштабируемо – у вас будет одна команда do_something_based_on_title , которая просто будет расти по мере добавления функций.

    Вместо одного массивного сценария set-title заставьте каждую команду отвечать за настройку собственного названия терминала при запуске. Вы можете сделать это легко с помощью псевдонимов, например (поместите это в свой .bashrc или аналогичный).

     set_title() { echo -e "\e]0;$*\a" } alias apic='set_title "API Codebase"; command_for_api_codebase' alias irc='set_title "IRC"; irssi' alias server1='set_title "Server1"; ssh server1' 

    Теперь у вас есть завершение табуляции для этих команд, нет риска того, что настройки заголовка и код запуска программы будут удалены, и больше не нужно щелкнуть правой кнопкой мыши на вкладке, чтобы установить ее заголовок. Просто запустите команды, которые вы хотите, и пропустите заголовок.

    Linux и Unix - лучшая ОС в мире.