You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac OS X 终端如何清除除最后n行外的全部历史输出内容

问题

已知晓可通过以下任意一种方式清除 macOS 终端的整个缓冲区:

  • ⌘ + K 快捷键
  • 执行命令:printf '\33c\e[3J'

请问是否可以实现清除整个缓冲区、仅保留最后n行内容的需求?


解答

完全可以实现,有两种常用方案,按需选择即可:

方案1:固定保留行数(终端全局设置)

适合长期需要固定保留指定行数的场景:

  1. 打开终端「偏好设置」→ 选择你正在使用的描述文件 → 切换到「窗口」标签页
  2. 在「回滚」区域勾选「限制回滚内容至」,填写你需要保留的行数
  3. 后续执行清屏操作时,就会自动只保留你设定的行数内容

方案2:灵活指定保留行数(自定义shell命令)

适合需要临时调整保留行数的场景,把以下函数写入你当前shell的配置文件(zsh对应~/.zshrc,bash对应~/.bash_profile):

# 清除缓冲区仅保留最后n行,不传参数默认保留10行
clear_keep() {
  keep_lines=${1:-10}
  # 移动光标到倒数第keep_lines行的行首
  tput cup $((LINES - keep_lines)) 0
  # 清除光标上方所有内容
  tput ed
  # 清除回滚缓冲区的冗余内容
  printf '\e[3J'
  # 光标归位到当前输入行
  tput cup $((LINES - 1)) 0
}

保存后执行source ~/.zshrc(或对应bash的配置文件)使配置生效。
使用示例:

  • 执行clear_keep 5,就会清除缓冲区仅保留最后5行内容
  • 直接执行clear_keep,默认保留最后10行内容

如果你使用的是iTerm2终端,还可以用快捷键⌘+⌥+B唤出历史内容选择框,手动框选需要删除的内容批量清除,灵活性更高。


内容的提问来源于stack exchange,提问作者dillon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:45:00