如何在终端右下角输出字符串?
答案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
不包含控制字符(如换行符、制表符...))。
如果你的细绳可能包含零宽度(如组合字符)或双宽度字符,您可以使用 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 是您要为字符串保留的长度。