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+L
window1并输入clear
window2。现在在两个窗口(鼠标滚轮)中向后滚动。在- 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
呢?