터미널에서 나 자신을 위한 pomodoro/카운트다운 타이머를 설정하려고 합니다.
이 댓글Superuser에서는 STDOUT에 남은 시간인 카운트다운 타이머 역할을 하는 편리한 작은 쉘 기능을 제공합니다 printf
(굉장합니다). 터미널 에뮬레이터 탭의 헤더에 실시간 카운트다운이 표시되어 탭을 왔다 갔다 하지 않고도 남은 시간을 모니터링할 수 있으면 좋겠다고 생각합니다.
그것은 나타난다환경 PROMPT_COMMAND
변수를 사용하여 창 제목을 업데이트할 수 있습니다., 그러나 그 내용이 실행되었기 때문에Bash가 프롬프트를 표시하기 전에만, 프로세스가 실행되는 동안 실시간으로 헤더를 업데이트할 수 없습니다(내가 아는 한).
이를 수행할 수 있는 방법이 있습니까?
(tmux에서 새 창을 분할하면 이 문제를 더 쉽게 해결할 수 있다는 생각이 들었습니다. 하지만 화면이 작아서 화면 공간을 모두 절약하고 싶습니다.)
답변1
터미널 코드가 필요할 수 있습니다. 참조http://wiki.bash-hackers.org/scripting/terminalcodes그리고https://en.wikipedia.org/wiki/ANSI_escape_code자세한 내용은 (또는http://invisible-island.net/xterm/ctlseqs/ctlseqs.htmlxterm 코드에 대한 다소 기술적인 설명입니다.
제목을 설정하는 방법의 예는 다음과 같습니다.
set_title() {
printf '\033]0;%s\007' "$*"
}
답변2
관련 ANSI 코드를 stdout 또는 stderr로 출력하면 됩니다.
다음은 나를 위해 일했습니다 xterm
.
for i in {10..1} ; do printf '\e]0;'$i'\a' ; sleep 1 ; done &
일부 터미널에서는 프로그래밍 방식으로 제목을 변경하는 API를 제공할 수도 있습니다.