상자에 screen이나 xproc과 같은 도구를 설치할 수 없습니다. 제목을 수정할 필요는 없고 창 제목 이름만 찾으면 됩니다.
echo -e "\033]0;[title]\07";
제가 아는 대로 제목을 수정합니다. 하지만 기존 헤더 이름을 알고 싶습니다.
답변1
다음을 시도해 보십시오. 그러나 호환성이 매우 제한되어 있습니다. 아래 참고 사항을 참조하세요.
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '\033'`; st=`printf '\234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-\033[21t}" > "`tty`"
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\\|$e*$st)
t=${t%$e\\}; t=${t%$st}; printf '%s\n' "${t#$e\][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
예:
$ get_title
$ title=`get_title`
또는 스크립트의 표준 입력이 터미널이 아닌 경우:
$ title=`get_title </dev/tty`
stty
+ kludge는 dd
터미널이 응답으로 이스케이프된 항목을 보고하지 않는 경우 스크립트가 차단되지 않도록 시도합니다 \e[21t
. 이(또는 더 나은) 접근 방식은 다른 제어 시퀀스(예: 커서 위치 가져오기)와 함께 사용할 수도 있습니다.
노트:
이스케이프는 "안전하지 않은" 것으로 간주 되므로 \e[21t
이를 작동시키려면 추가 구성이 필요합니다.
을 위한 xterm
:echo '*.vt100.allowWindowOps: true' | xrdb -override
을 위한 urxvt
:echo 'Rxvt.insecure: true' | xrdb -override
그럴 것이다전혀 작동하지 않습니다gnome-terminal
, mate-terminal
, xfce4-terminal
등과 같은 vte 기반 터미널에서 보고된 대로서서히 나아가는("터미널") 또는비어 있는응답의 헤더.
mlterm
특별한 것은 필요하지 않지만 이전에 헤더가 설정되지 않은 경우 \e]2;TITLE\a
(오류는안정적인현재 자원에서).
screen
-t
C-a A실행 중인 창의 제목이 아니라 자체 창 제목(옵션이나 명령을 사용하여 설정된 제목)을 보고합니다 .
차단되었으며 지원되지 않습니다 tmux
.
답변2
예를 들어, konsole
현재 상호 작용 bash
인스턴스가 실행 중인 창의 제목을 가져옵니다.
#!/bin/bash
get_title() {
local pid=$$
local pids=`pstree -lpsT $pid | tr '-' '\n' | tac | xargs | grep -oE '[0-9]+'`
for pid in $pids
do
local wid=`xdotool search --pid $pid`
if [ ! -z "${wid}" ]
then
echo `xdotool getwindowname $wid`
exit
fi
done
}
get_title