AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 410708
Accepted
Anthony
Anthony
Asked: 2017-12-14 09:52:32 +0800 CST2017-12-14 09:52:32 +0800 CST 2017-12-14 09:52:32 +0800 CST

清除终端回滚缓冲区的最简单方法+一些更深入的解释?

  • 772

何必?

清除回滚缓冲区在很多方面都很方便,例如,当我希望运行一些输出较长的命令,并希望快速滚动到此输出的开头时。清除回滚缓冲区后,我可以滚动到顶部,然后就完成了。

一些考虑:

根据人类的说法,有clear命令,

如果可能, clear清除屏幕,包括它的回滚缓冲区(如果定义了扩展的“E3”功能)。

在 gnome-terminalclear中不清除回滚缓冲区。(不过,什么是“E3”功能?)

还有reset, 它清除了,但它的作用远不止于此,而且它真的很慢(在我的系统上它需要超过一秒钟,这对于人类来说是明显的延迟)。

还有echo -ne '\ec'or echo -ne '\033c',它可以完成这项工作。并且确实比reset.

问题是,什么是\ec序列,它与什么clear和reset做什么有什么不同,为什么没有单独的命令呢?

还有 readline 的C-l键序列,默认绑定到clear-screen命令(我的意思是,readline 命令,而不是 shell 命令)。这个命令是什么?它发出哪个转义序列?它实际上是如何工作的?它运行shell命令吗?或者是什么?同样,在 gnome-terminal 中,它似乎只是通过吐出空白行直到提示出现在终端的顶行。不确定其他终端仿真器。这是非常麻烦的行为。它用大块的空虚污染回滚,所以你必须向上滚动更多,更多。这就像一个 hack,而不是干净的解决方案。

另一个问题是,是否有针对上述\ec序列的 readline 命令?我想将它绑定到,C-l因为我总是想在清除屏幕时清除回滚缓冲区。

另一个问题是如何在终端中输入这样的转义序列来执行所需的操作?然后不必考虑绑定C-l到另一个 readline 命令(如果存在这样的命令)。我试着打字Esc,然后c,但这不起作用。

更新 这个问题主要在这里回答:https ://unix.stackexchange.com/a/375784/257159 。这是一个很好的答案,几乎可以解释这里提出的所有问题。

escape-characters readline
  • 4 4 个回答
  • 7843 Views

4 个回答

  • Voted
  1. Best Answer
    Electric Vibes
    2021-08-14T02:59:55+08:002021-08-14T02:59:55+08:00

    从man bash's readline 部分:

       clear-display (M-C-l)
              Clear  the  screen  and,  if possible, the terminal's scrollback buffer, then redraw the current line, leaving the
              current line at the top of the screen.
       clear-screen (C-l)
              Clear the screen, then redraw the current line, leaving the current line at the top of the screen.  With an  argu‐
              ment, refresh the current line without clearing the screen.
    

    所以按 control + alt + L

    • 5
  2. Fox
    2017-12-14T10:37:38+08:002017-12-14T10:37:38+08:00

    许多终端仿真器使用与XTerm相同或类似的转义序列。对于 XTerm,Escc定义为“完全复位 (RIS)”。完全重置会清除回滚缓冲区似乎是合理的。


    readline我使用绑定到序列本身没有成功,但一种解决方法是

    bind '"\C-l": "\C-a\C-kprintf\ "\\033c"\C-m"'
    

    这有一些警告。首先,它将printf命令放入您的 shell 历史记录中,这并不理想。二是不能边输入命令边使用;它覆盖当前输入行。

    • 4
  3. geogeo
    2022-07-22T11:01:52+08:002022-07-22T11:01:52+08:00

    这对我有用:

    printf '\033[3J'
    

    (来自clear手册页)

    • 1
  4. user395728
    2020-02-17T07:05:46+08:002020-02-17T07:05:46+08:00

    这是我发现的最好的清除终端和历史/回滚的方法

    clear && history -c
    
    • -1

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    JSON数组使用jq来bash变量

    • 4 个回答
  • Marko Smith

    日期可以为 GMT 时区格式化当前时间吗?[复制]

    • 2 个回答
  • Marko Smith

    bash + 通过 bash 脚本从文件中读取变量和值

    • 4 个回答
  • Marko Smith

    如何复制目录并在同一命令中重命名它?

    • 4 个回答
  • Marko Smith

    ssh 连接。X11 连接因身份验证错误而被拒绝

    • 3 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Marko Smith

    systemctl 命令在 RHEL 6 中不起作用

    • 3 个回答
  • Marko Smith

    rsync 端口 22 和 873 使用

    • 2 个回答
  • Marko Smith

    以 100% 的利用率捕捉 /dev/loop -- 没有可用空间

    • 1 个回答
  • Marko Smith

    jq 打印子对象中所有的键和值

    • 2 个回答
  • Martin Hope
    EHerman JSON数组使用jq来bash变量 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux 日期可以为 GMT 时区格式化当前时间吗?[复制] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC 如何复制目录并在同一命令中重命名它? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve “root”用户的文件权限如何工作? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe 将默认编辑器更改为 vim for _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey 如何下载软件包而不是使用 apt-get 命令安装它? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao 为什么目录 /home、/usr、/var 等都具有相同的 inode 编号 (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg —list-keys 命令在将私钥导入全新安装后输出 uid [未知] 2017-11-26 18:26:02 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve