터미널 오른쪽 하단에 문자열 출력

터미널 오른쪽 하단에 문자열 출력

터미널 오른쪽 하단에 문자열을 출력하는 방법은 무엇입니까?

답변1

string=whatever
stty size | {
  read y x
  tput sc # save cursor position
  tput cup "$((y - 1))" "$((x - ${#string}))" # position cursor
  printf %s "$string"
  tput rc # restore cursor.
}

모든 문자가 $string하나라고 가정넓습니다( $string제어 문자(예: 개행, 탭 등)를 포함하지 않음).

만약 당신의너비가 0(예: 결합 문자) 또는 이중 너비 문자를 포함할 수 있는 경우 ksh93의 printf형식 %Ls지정자를 사용하여 문자 너비를 기준으로 형식을 지정할 수 있습니다.

string='whatéver'
# aka string=$'\uFF57\uFF48\uFF41\uFF54\uFF45\u0301\uFF56\uFF45\uFF52'
stty size | {
  read y x
  tput sc # save cursor position
  tput cup "$((y - 1))" 0 # position cursor
  printf "%${x}Ls" "$string"
  tput rc # restore cursor.
}

그러나 이렇게 하면 마지막 줄의 앞부분이 제거됩니다.

답변2

tput cup $(tput lines) $[$(tput cols)-16]
printf "string"

또는

tput cup $[$(tput lines)-1] $[$(tput cols)-16]
printf "string"

여기서 16은 문자열에 예약하려는 길이입니다.

관련 정보