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

Yor*_*ubs 15 bash terminal inputrc

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

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

小智 10

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

alias clear='tput -x clear'
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • @YorSubs:可移植的方法是将“tput”与“terminfo(5)”中列出的名称一起使用(输入“man 5 terminfo”并向下滚动,直到到达大表;列出了“tput”的可能参数在上限名称下)。这假设你的 TERM 环境变量设置正确,它应该是这样,除非你的 bashrc 被它搞乱了(不要这样做!)。请注意,字符串功能通常是最有趣/最有用的。 (2认同)