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

добавьте его в свой .zshrc

if [ -z "$TMUX" ]
then
    tmux attach -t TMUX || tmux new -s TMUX
fi

, тогда tmux автоматически подключится к сеансу под названием TMUX , когда вы запустите свой терминал.

5
25.02.2016, 13:43
2 ответа

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

Но даже если бы вы могли, изменение поведения на основе названия терминала было бы очень чревато ошибками. Нет простого способа проверить орфографические ошибки или что-то в этом роде. Кроме того, она не очень масштабируема - у вас будет одна команда 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'

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

2
27.01.2020, 20:34

Я бы сделал это немного по-другому. Вместо того, чтобы вручную устанавливать заголовок вкладки, создайте функцию, которая устанавливает заголовок и запускает нужную команду. Добавьте эту функцию (адаптированную из здесь ) в свой ~ / .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}"
}
9
27.01.2020, 20:34

Теги

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