![在终端右下角输出字符串](https://linux22.com/image/77993/%E5%9C%A8%E7%BB%88%E7%AB%AF%E5%8F%B3%E4%B8%8B%E8%A7%92%E8%BE%93%E5%87%BA%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
如何在终端右下角输出字符串?
答案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 是您要为字符串保留的长度。