我想做的事情是“top”命令在退出时执行的操作:
在屏幕上打印一些内容,然后跳到终端窗口的底部,以便提示位于底线。
(如果我只打印1000条空行,我将丢失我在屏幕上打印的内容,因此我需要一个更优雅的解决方案才能到达终端窗口的底部)
如何在bash中实现这一目标?
答案 0 :(得分:7)
tput cup $(tput lines) 0
通常,tput cup X Y
将光标移动到位置X,Y(从左上角开始计数。)tput lines
或tput li
为您提供当前终端的最大X值。请注意tput li
依赖于可能不存在的terminfo功能,但tput cup 1000 0
应具有相同的效果(假设您的tty少于1000行!)如果要在屏幕上打印某些内容在某个特定的地方,真的没有必要跳到底部",你可以这样做:clear; tput cup 5 0; printf hello; sleep 1; tput cup 5 0; printf world; tput el; tput cup $(tput li) 0
答案 1 :(得分:0)
在bash中,你有包含终端大小的LINES和COLUMNS变量,当你调整终端窗口的大小时会更新这些变量。
我建议您根据自己的要求使用以下示例:
echo -ne "\E[${LINES};0H"
它使用ansi命令在终端上工作。