我一直在使用以下命令:
reset
清除我的终端。虽然我很确定这不是我应该做的。重置,顾名思义,就是重置整个终端(更改很多内容)。以下是我想要的:
我基本上想使用命令clear
。但是,如果你清除然后向上滚动,你仍然会得到大量之前的内容。一般来说这不是问题,但我正在查看很长的总日志,我想确保我只查看最新的日志。我知道我可以使用more
或类似的东西,但我更喜欢这种方法。
答案1
回滚缓冲区不是 bash 的功能,而是终端程序的功能。你没有说你使用的是什么终端。
如果您使用 xterm,您可能能够通过在终端中回显 ESC-c 来清除已保存的行。
无论您使用什么终端程序,这都可能有效,也可能无效。
在 Linux 上这可能会起作用:
echo -e '\0033\0143'
在 FreeBSD 上 echo 不接受 -e,因此您可以尝试:
printf '\033\143'
答案2
对每项工作使用正确的工具:
用于
clear
清除终端窗口。reset
当终端因控制序列而混乱时,使用它来重置终端。cat
仅当你想将大量数据从一个地方传输到另一个地方时使用不间断。用于
head
仅传输前几行(选择多少行,用-n
)文本输出。使用寻呼机程序(例如
less
或)most
来查看输出页面。用于
tail -f /var/log/foo.log /var/log/bar.log
查看几个不同的日志文件。- 使用 GNU
tail
,-F
选项会更好,因为即使在新文件出现在其位置时它也可以继续跟踪该文件,就像日志文件常见的那样。
- 使用 GNU
答案3
仅提供技术答案:reset
重新初始化终端,就像从头开始重新打开一样。stty sane
将执行许多相同的功能(无需重置)。这与^L
(Ctrl+L) (irrc) 和相同tput clear
。尽管之前的发帖人 (@grawity) 说过,clear
不会输出一堆换行符。它发送's 重置,如或TERM
中定义的那样,对我来说,使用(xterm) 它与命令 相同。terminfo
termcap
gnome-terminal
perl -e'print "\33[H\33[2J"'
如果您只想清除缓冲区 - 与重置整个终端相比,请尝试以下操作tput reset
。 它应该速度非常快,可以做你想做的事。(虽然你确实应该用 读取文件less
)
tput reset
,发送 terminfo 值进行重置——在我的终端(xterm)上,它与perl -e'print "\33c"'
答案4
清除所有内容的最佳方法可能是使用终端的功能:
- Konsole:Ctrl++Shift视图K→清除回滚并重置
- GNOME 终端:编辑 → 重置和清除
- PuTTY: Ctrl+ right-click→ 清除回滚
这样,两个缓冲区都会被清除,并且终端状态会重置为启动时的状态(这可能与使用相同或不同reset
)。