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

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

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

например, IRC, API Codebase, API Logs, Server1 и т. д.

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

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

и так далее.

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

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' 

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

  • Почему `clear` не очищает весь экран?
  • Как найти количество вертикальных линий, доступных в терминале?
  • Как создать скрипт, который запускает другой скрипт в отдельном окне терминала и не ждет?
  • GNOME-TERMINAL испорчен
  • Почему «echo $ 0» дает разные результаты для двух разных терминалов?
  • Как автоматически изменить фон терминала на основе имени ssh?
  • Установить количество строк для gnome-terminal или других эмуляторов
  • Установить стартовый каталог для профиля gnome-terminal
  • Терминал недоступен после команды
  • Почему только некоторые терминалы получают оч
  • Как создать окно терминала с одной вкладкой на длинный сценарий, который я могу убить индивидуально с помощью ctrl-C и перезапустить?
  • Запуск истинных нескольких экземпляров процесса gnome-terminal
  • Linux и Unix - лучшая ОС в мире.