내 터미널의 상단 표시 줄에 어떤 명령이 실행되고 있는지 알려주는 방법은 무엇입니까?


13

나는 종종 병렬로 명령을 실행하는 데 오랜 시간이 걸리며 때로는 화면에 기본적으로 동일한 종류의 정보를 출력하기 때문에 실행중인 곳을 추적하지 못합니다.

어떤 터미널에서 어떤 명령이 실행되고 있는지 알 수있는 방법이 있습니까?


1
이것이 여전히 작동하는지 확실하지 않지만 @dessert의 탁월한 답변 외에도 도움이 될 수 있습니다. → askubuntu.com/questions/774532/…
Videonauth

답변:


12

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프로필 설정 에서 찾았습니다 .


2

터미널 창 제목은 변수 ( $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 인수가 없으면 터미널 창 제목을 이전 명령으로 변경합니다.

참조 및 예 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.