제목이 터미널 탭으로 설정된 경우 스크립트를 실행하는 방법은 무엇입니까?

제목이 터미널 탭으로 설정된 경우 스크립트를 실행하는 방법은 무엇입니까?

일상 업무에서 나는 많은 터미널 탭을 보관합니다. 그래서 이것을 식별하기 위해 제목을 설정했습니다.

터미널 탭 > 제목 설정

예를 들어 IRC, API 코드 베이스, API 로그, Server1 등이 있습니다.

내가 하고 싶은 것은 제목에 따라 탭 내에서 특정 작업을 수행하는 것입니다. 예를 들어

  1. "API 코드베이스"를 설정할 때 내 코드베이스로 이동하여 적절한 Python 가상 환경을 활성화해야 합니다.
  2. "IRC"를 설정하면 실행되어야 합니다.irssi
  3. "Server1"을 설정할 때 ssh 명령을 실행하여 서버에 연결해야 합니다.

등.

이것이 어떻게 달성될 수 있습니까?

답변1

저는 조금 다르게 합니다. 탭 제목을 수동으로 설정하는 대신 제목을 설정하고 원하는 명령을 실행하는 함수를 만듭니다. 이 기능을 추가하세요(다음에서 수정됨).여기)를 귀하의 것 ~/.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}"
}

답변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'

이제 이러한 명령에 대해 탭 완성을 수행할 수 있으므로 더 이상 제목 설정 및 프로그램 시작 코드와 관련된 문제의 위험이 없으며 더 이상 제목을 설정하기 위해 탭을 마우스 오른쪽 버튼으로 클릭할 필요가 없습니다. 원하는 명령을 실행하면 제목이 설정됩니다.

관련 정보