답변:
Bash 에서 가져옴-두 번째 명령 · U & L을 실행하여 터미널 제목 업데이트 및 약간 변경됨 :
trap 'echo -ne "\033]2;$(history 1 | sed "s/^[0-9 ]* \+//")\007"' DEBUG
이것은 (ab) DEBUG신호를 트리거로 사용하여 기록의 마지막 항목, 즉 XTerm Control Sequence 를 통해 실행 한 마지막 명령으로 제목을 업데이트합니다 . ~/.bashrc모든 새 터미널 창에서 기능을 활성화 하려면 라인을 추가하십시오 .
제목과 함께 다른 명령 출력을 인쇄하려면 pwd":"와 함께 현재 디렉토리와 현재 실행중인 명령을 말하십시오 printf. 다음과 같이 사용 하는 것이 좋습니다 .
trap 'echo -ne "\033]2;$(printf "%s: %s" "$(pwd)" "$(history 1 | sed "s/^[0-9 ]* \+//")")\007"' DEBUG
일부 터미널 에뮬레이터를 사용하면 동적 제목을 지정하고 명령 이름을 옵션으로 제공하여 주변을 둘러 볼 필요조차 없습니다. 검색하고 yakuake프로필 설정 에서 찾았습니다 .
터미널 창 제목은 변수 ( $PS1기본 프롬프트 문자열) 의 값을 변경하여 변경할 수 있습니다 . [1] [2] . 우리는이 솔루션을 디저트의 답변 에서 명령 을 사용한다는 아이디어와 결합 할 수 있습니다. history
접근법 1 : 값을 $PS1자동으로 업데이트하십시오 . (최신 정보)
파일 맨 아래에 다음 줄을 추가하십시오 ~/.bashrc.
# Change the terminal window title, based on the last executed command
rtitle() {
# If the variable $PS1_bak is unset,
# then store the original value of $PS1 in $PS1_bak and chang $PS1
# else restore the value of $PS1 and unset @PS1_bak
if [ -z "${PS1_bak}" ]; then
PS1_bak=$PS1
PS1+='\e]2;$(history 1 | sed "s/^[0-9 ]* \+//")\a'
else
PS1=$PS1_bak
unset PS1_bak
fi
};
export -f rtitle # Export the function to be accessible in sub shells
#rtitle # Uncomment this line to change the default behaviour
그런 다음 source ~/.bashrc새 터미널을 열고 다음 과 같은 방식으로 기능을 사용하십시오.
rtitle마지막으로 실행 된 명령을 기반으로 터미널 창 제목을 자동으로 변경하기 시작 합니다 .rtitle기본 동작으로 돌아가려면 다시 한 번 실행 하십시오.접근법 2 : $PS1수동으로 값을 업데이트하십시오 . (초기 답변)
파일 맨 아래에 다음 줄을 추가하십시오 ~/.bashrc.
set-title() { # Set a title of the current terminal window
[[ -z ${@} ]] && TITLE="$(history 2 | head -1 | sed "s/^[0-9 ]* \+//")" || TITLE="$@" # If the title is not provided use the previous command
[[ -z ${PS_ORIGINAL} ]] && PS_ORIGINAL="${PS1}" || PS_ORIGINAL="${PS_ORIGINAL}" # Use the original value of PS1 for each future change
PS1="${PS_ORIGINAL}"'\e]2;'"$TITLE"'\a' # Change the prompt (the value of PS1)
}; export -f set-title
그런 다음 source ~/.bashrc새 터미널을 열고 다음 과 같은 방식으로 기능을 사용하십시오.
set-title <something>터미널 창 제목이로 변경됩니다 <something>.set-title 인수가 없으면 터미널 창 제목을 이전 명령으로 변경합니다.참조 및 예 :