Answers:
当您这样启动时...
top && clear
...以q离开顶部后,屏幕将清除。
这更像less:
tput smcup ; top ; tput rmcup
(smcup切换到top执行命令的辅助屏幕,退出时top rmcup切换回普通屏幕)
您可以为top命令添加别名以执行此操作(如何创建永久的Bash别名?)
clear似乎也擦除了除了回滚缓冲区的最后一个屏幕以外的所有内容(因此,在这种情况下,只剩下top的最后一个屏幕)-至少在xfce4-terminal和QTerminal中。该tput答案的伟大工程,尤其是在一个别名top
less最后的输出从缓冲区中完全消失了。
htop,并且2.将命令别名在一起,因此您不必每次都手动链接它们。
讽刺的是1,这是短暂的行为top。在3.3.8中,top确实清除了屏幕,但没有更新过去或之后的版本。请参阅Red Hat Bug#977561:
屏幕清除是终端操作更改的间接结果,该更改是Jim Warner(“ top”工具的作者)引入的,目的是抑制某些广泛使用的终端应用程序生成的SIGWINCH信号淹没“ top”工具。是我报告了洪水问题,他尽力解决该问题,并以8次单独提交的形式发布了此问题的修复程序。引入屏幕清除功能的提交具有以下哈希值:“ dedaf6e1a81738ff08ee8e8523871e12f555ad6d”。
由于存在错误报告,Jim随后对其进行了修复,使其不再清除3.3.9中的输出。
top没有任何选项或配置设置可以控制此操作,即AFAICT,这完全是硬编码的行为。您可能要在https://gitlab.com/procps-ng/procps/issues/上提交功能请求。
在此之前,您可以clear手动喜欢Rinzwind的建议,也可以tput像steeldriver的建议那样使用。
有趣的是,上面提到的提交对steeldriver建议的命令也有很好的解释,因为它实际上与代码中最初执行的命令相同:
在某些调整大小操作之后,在几个终端仿真器中使用的回滚缓冲区可能给用户带来真正的不便。为了正确渲染top的显示,经常需要额外的击键。
经过大量研究之后,我们发现了两个terminfo字符串,它们具有禁用/还原该织补回滚缓冲区的作用。它们很好地隐藏在字符串标题下(“使用cup开始/结束程序”)。反过来,“ cup”处理tty的光标寻址功能。
只要他们完成工作,我们就不在乎您如何称呼它们或它们指的是什么。这些真的可以!请注意,存在一些副作用,其中一些甚至可以被认为是有益的:
enter_ca_mode / smcup / ti禁用回滚缓冲(这很好,这就是我们一直希望的)
exit_ca_mode / rmcup / te恢复回滚缓冲区(但也恢复屏幕内容位于pre-top之前)(这与以前的程序最终结果不同)(最后渲染的屏幕保持不变)
...对应于tput smcup和tput rmcup命令。
1 必填xkcd。
您正在寻找的行为从少到多都内置在称为htop的替代方案中。您可以使用以下方法安装它:
sudo apt-get install htop
具体来说,当您关闭htop时,它将在开始保留原始屏幕内容之前切换到备用屏幕模式。与procps的顶部相比,它还具有各种其他增强功能。安装后,您可以以普通用户身份运行它:
htop
htop是非常丰富多彩的,对鼠标的支持,等等
正如Rinzwind的答案指出的那样,该clear命令清除top了屏幕上的输出。
退出后,top您还可以使用Ctrl+ L清除top屏幕上的输出。但是,在执行任何一条命令之后,您仍然可以向上滚动屏幕以查看旧的top输出。
要真正清除屏幕,使top输出无法回滚,请使用以下reset命令:
top && reset
提供全新会话“新鲜外观”的另一种方法是运行“ ASCII初始屏幕”(如果有的话)。就我而言,我将运行:
top && reset && now && screenfetch
now脚本调用了天气,日历(cal)和toilet时间。screenfetch 绘制Ubuntu徽标和计算机统计信息。.bashrc 定期重新运行,因为通常export PATH=...:$PATH该文件中存在类似的行,并且多次运行它将不必要地扩展PATH。此外,要求neofetch在.bashrc不规范的行为(尽管它看起来花哨)。例如,当我重新运行时,.bashrc什么也没发生。
clear行为并不相同:请for i in {1..200}; do echo "line $i"; done在两个不同的全新窗口中尝试。然后点击CTRL+Lwindow1并输入clearwindow2。现在在两个窗口(鼠标滚轮)中向后滚动。在- CTRL+L窗口中,您可以看到所有行(取决于您的滚动缓冲区),而在- clear窗口中,您只能向后滚动一个屏幕。也就是说:clear清除回滚缓冲区,而CTRL+L类似于$ window_height按下ENTER(aka newline)的次数。
neofetch是一个不错的选择,但我猜它是它的派生类screenfetch。我用它来提醒自己我在Ubuntu中,因为我具有双重启动功能,而Windows Bash具有不同的启动屏幕。我将.bashrc参考。至于clear和Ctrl+ L我的观点是他们都在,他们都离开类似于top在滚动输出后缓冲器。
.bashrc。试试看curl wttr.in/Edmonton?0,太棒了。使用curl wttr.in/:help得到帮助。我在/etc/update-motd.d/scriptlet中有一个类似的调用,因此从控制台或ssh登录时会得到通知(并非对于每个终端窗口)。如果您愿意,可以添加--silent --max-time 3到curl调用中,这样,如果互联网速度较慢,它就不会永远消失。
curl wttr.in/Edmonton?0真棒!非常感谢。在toilet时间显示在我的初始屏幕之后,我将尝试将其压缩:)
htop呢?