我可以使clear命令的行为类似于Bash中的Ctrl-L吗?

我可以使clear命令的行为类似于Bash中的Ctrl-L吗?

看来clear和 bash Ctrl-L是有很大不同的;clear完全删除以前的所有终端信息(因此您无法向上滚动) while Ctrl-L只是滚动屏幕,使光标位于页面顶部,以便您仍然可以向上滚动并查看以前的信息。我更喜欢Ctrl-L系统。有没有办法覆盖clear,以便它执行Ctrl-L而不是擦除所有以前的终端信息?这不是一个大问题,但我只是出于好奇而想知道是否有一种方法可以使用别名clear来指向我喜欢的Ctrl功能L

顺便说一句,我刚刚注意到 PowerShell 也有一个绑定Ctrl-L并且它的执行方式与Ctrl-L在 bash 上相同;看起来 PowerShell 设计者从 bash 中借鉴了很多,而cmd.exe控制台没有这个功能。

答案1

有没有办法覆盖清除,以便它执行 Ctrl-L 而不是擦除所有以前的终端信息?

alias clear='tput -x clear'

是的,Ctrl-L在 bash 中(在模式下set -o emacs)做完全相同的事情。

或者,您可以只是硬连线转义,alias clear='printf "\033[H\033[2J"'它应该在大多数终端仿真器中工作,并且不假设您已经ncursesbash安装了。

注意:clearbusybox 中的小程序不会擦除回滚缓冲区,因此如果您使用某些基于 busybox 的系统(就像大多数嵌入式 Linux 系统一样),则无需执行任何特殊操作。

答案2

clear是一个终端命令,摘录如下man clear

clear 如果可能的话, 描述 将清除您的屏幕,包括其回滚缓冲区(如果定义了扩展的“E3”功能)。clear在环境中查找由环境变量 TERM 指定的终端类型,然后在 terminfo 数据库中确定如何清除屏幕。 clear写入标准输出。您可以将标准输出重定向到一个文件(这会阻止clear实际上清除屏幕),然后将 cat 文件重定向到屏幕,并在此时清除它。

Ctrl+l是一个键绑定readlineclear-screen命令( man 3 readline)。

清空屏幕,然后重新绘制当前行,将当前行保留在屏幕顶部。使用参数时,刷新当前行而不清除屏幕。


我找不到clear给 readlineclear-screen命令起别名的方法,而且可能根本不可能。

相关内容