Bash 终端程序如何向屏幕添加滚动?
程序less、more或vi如何在不清除屏幕的情况下在终端屏幕上添加滚动部分,以及之后它如何消失Bash 终端程序如何向屏幕添加滚动?,bash,shell,terminal,less-unix,Bash,Shell,Terminal,Less Unix,程序less、more或vi如何在不清除屏幕的情况下在终端屏幕上添加滚动部分,以及之后它如何消失 如果我是从脚本运行它,或者脚本退出,有没有办法在特定时间内运行得更少?首先,这与bash或您正在使用的任何shell无关。less命令本身处理屏幕更新;它可以从任何shell或任何其他程序运行 您的终端仿真器支持转义序列。写入可打印字符(字母、数字等)会导致显示这些字符。写入转义序列会导致其他各种情况发生:移动光标、清除当前行、清除屏幕等 termcap或termfo和curses或ncurses软
如果我是从脚本运行它,或者脚本退出,有没有办法在特定时间内运行得更少?首先,这与bash或您正在使用的任何shell无关。
less
命令本身处理屏幕更新;它可以从任何shell或任何其他程序运行
您的终端仿真器支持转义序列。写入可打印字符(字母、数字等)会导致显示这些字符。写入转义序列会导致其他各种情况发生:移动光标、清除当前行、清除屏幕等
termcap
或termfo
和curses
或ncurses
软件包提供对这些转义序列的访问less
,vim
,emacs
,通常使用ncurses
来帮助管理屏幕
与您的问题相关的两个序列被termcap称为ti
和te
,smcup
和rmcup
。smcup
序列使终端保存其当前状态(屏幕上显示的所有内容以及光标位置),然后切换到开始为空的辅助显示缓冲区。rmcup
序列恢复保存的状态并返回主显示缓冲区。默认情况下,使用ncurses
的程序将在进入时打印smcup
序列,在退出时打印rmcup
条目。这就是这些程序在终止时如何将终端窗口恢复到以前的状态
另外,如果我是从脚本运行它,是否有任何方法可以在特定时间内运行得更少,或者脚本退出的方法
我不认为有什么好方法可以做到这一点less
是一个交互式程序;它通常仅在用户键入q
或类似内容时终止。运行它一段特定的时间与它的设计目标背道而驰,作为一个用户,如果less
在我使用它时被终止,我会很恼火
您可以使用
timeout
命令,但这会干扰smcup
/rmcup
机制,导致显示器可能损坏。可能有更好的方法来完成您要做的事情。我只是想显示一条实时更新的消息,这样我就不需要每隔一秒左右刷新一次。不过现在没关系了,因为smcup和rmcup与我想做的事情配合得很好,我发现它们的tput命令非常有用。谢谢你的帮助。@Jidder:那么你应该问一下你到底想做什么;看见watch
命令可能就是您要找的。我问了我想知道什么。我意识到我可能看起来没有。除了显示更新消息的最初问题外,我还(比消息更重要的是)想知道更少和类似的命令是如何工作的。