일상 업무에서 나는 많은 터미널 탭을 보관합니다. 그래서 이것을 식별하기 위해 제목을 설정했습니다.
터미널 탭 > 제목 설정
예를 들어 IRC, API 코드 베이스, API 로그, Server1 등이 있습니다.
내가 하고 싶은 것은 제목에 따라 탭 내에서 특정 작업을 수행하는 것입니다. 예를 들어
- "API 코드베이스"를 설정할 때 내 코드베이스로 이동하여 적절한 Python 가상 환경을 활성화해야 합니다.
- "IRC"를 설정하면 실행되어야 합니다.
irssi
- "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'
이제 이러한 명령에 대해 탭 완성을 수행할 수 있으므로 더 이상 제목 설정 및 프로그램 시작 코드와 관련된 문제의 위험이 없으며 더 이상 제목을 설정하기 위해 탭을 마우스 오른쪽 버튼으로 클릭할 필요가 없습니다. 원하는 명령을 실행하면 제목이 설정됩니다.