터미널 오른쪽 하단에 문자열을 출력하는 방법은 무엇입니까?
답변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은 문자열에 예약하려는 길이입니다.