linux clear命令

clear命令用于清除终端屏幕。它会清空当前终端窗口中的所有输出,让屏幕回到干净的状态,类似于图形界面中的"清屏"功能。

语法格式

clear [选项]

命令功能

  • 清除终端屏幕上的所有输出
  • 将光标移动到屏幕左上角
  • 提供干净的终端界面
  • 不会影响终端的历史记录

📝 重要说明

  • clear实际上是tput clear命令的快捷方式
  • 它只是清除屏幕显示,不会删除命令历史记录
  • 可以通过滚动条或快捷键查看被清除的内容
  • 不同终端的清除效果可能略有差异

参数说明

参数 说明
-T 类型 指定终端类型。通常会自动检测,不需要手动指定
-V 显示版本信息
-x 不清除滚动缓冲区(只清除可视区域)
--help 显示帮助信息

💡 clear 与 reset 的区别

特点 clear reset
主要功能 清除屏幕显示 重置终端设置并清除屏幕
影响范围 只影响显示内容 影响所有终端设置(字符集、回显等)
执行速度 快速 较慢
适用场景 日常清屏 终端显示异常时修复
快捷键 Ctrl+L 无通用快捷键

常用示例

示例1:基本用法 - 清除屏幕

直接使用clear命令清除屏幕:

# 终端中有很多输出
$ ls -la
$ pwd
$ whoami
$ date
# ... 很多其他命令输出

# 清除屏幕
$ clear
# 屏幕变为空白,光标在左上角

示例2:使用快捷键

大多数终端支持Ctrl+L快捷键:

# 按下 Ctrl+L 即可清屏
# 效果与执行 clear 命令相同

$ ls -la
total 100
drwxr-xr-x 5 user user 4096 Mar 10 10:00 .
drwxr-xr-x 18 user user 4096 Mar 9 09:00 ..
-rw-r--r-- 1 user user 220 Mar 10 09:30 .bashrc
[按 Ctrl+L]
# 屏幕清空
$ _

示例3:只清除可视区域

使用-x参数不清除滚动缓冲区:

# 清除屏幕但保留滚动缓冲区的内容
$ clear -x

# 这样可以通过滚动条查看之前的内容
# 但当前可视区域会被清空

示例4:在脚本中使用

在Shell脚本中清除屏幕:

#!/bin/bash

# 显示系统信息前先清屏
clear

echo "=== 系统信息 ==="
echo "主机名: $(hostname)"
echo "系统版本: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2)"
echo "内核版本: $(uname -r)"
echo "当前用户: $(whoami)"
echo "当前时间: $(date)"

示例5:使用转义序列清屏

直接使用ANSI转义序列清除屏幕:

# 使用echo发送清屏序列
$ echo -e "\033[2J"

# 清屏并移动光标到左上角
$ echo -e "\033[2J\033[H"

# 这与clear命令的效果相同

示例6:组合命令使用

结合其他命令使用:

# 清屏后立即执行命令
$ clear && ls -la

# 或者
$ clear; pwd

# 在管道中使用
$ echo "正在清屏..." && sleep 1 && clear

示例7:检查clear命令的实际位置

查看clear命令的实现:

# 查看clear命令的实际位置
$ which clear
/usr/bin/clear

# 查看它是哪个文件的符号链接
$ ls -l /usr/bin/clear
lrwxrwxrwx 1 root root 9 Apr 15  2020 /usr/bin/clear -> /usr/bin/tput

# 所以clear实际上是tput clear
$ tput clear  # 效果相同

示例8:自定义清屏函数

~/.bashrc中创建别名或函数:

# 添加到 ~/.bashrc 中

# 创建清屏别名
alias cls='clear'

# 创建带延迟的清屏函数
function clear_with_delay() {
    echo "3秒后清屏..."
    sleep 3
    clear
}

# 创建带确认的清屏函数
function confirm_clear() {
    read -p "确定要清屏吗?(y/N): " choice
    case "$choice" in
        y|Y) clear ;;
        *) echo "取消清屏" ;;
    esac
}

示例9:不同终端的兼容性

检查不同终端的清屏行为:

# 检查终端类型
$ echo $TERM
xterm-256color

# 对于不同终端,clear的行为可能略有不同
# 但通常都能正常工作

# 如果clear有问题,可以尝试
$ tput clear
$ printf "\033c"

⚠️ 注意事项

  1. 不可恢复:clear清除的内容无法通过命令恢复(但可通过终端滚动查看)
  2. 终端差异:不同终端模拟器对clear的实现可能略有差异
  3. 远程会话:在SSH或telnet会话中,clear只清除本地显示
  4. 脚本使用:在脚本中过度使用clear可能影响用户体验
  5. 快捷键冲突:在某些程序中,Ctrl+L可能有其他用途

💡 实用技巧

  1. 快捷键记忆:Ctrl+L = "L" for "clear"
  2. 快速清屏:输入cl然后按Tab键自动补全为clear
  3. 保留命令历史:清屏后仍可用上下箭头查看之前执行的命令
  4. 组合使用clear && command可以在清屏后立即执行新命令
  5. 脚本美化:在脚本开头使用clear可以让输出更整洁

常见问题

Q: clear命令会删除命令历史吗?

A: 不会。clear只清除屏幕显示,不会影响bash的历史记录。历史记录保存在~/.bash_history文件中。

Q: 如何查看被clear清除的内容?

A: 大多数终端模拟器都有滚动条,可以向上滚动查看被清除的内容。也可以使用script命令记录整个会话。

Q: clear和Ctrl+L有什么区别?

A: 功能上完全相同。Ctrl+L是clear的键盘快捷键。

Q: 为什么有些终端clear后还有残留?

A: 可能是终端缓冲区设置问题。可以尝试reset命令或调整终端设置。

Q: 可以在脚本中禁用clear吗?

A: 可以创建别名覆盖clear命令:alias clear='echo "clear is disabled"'

相关命令

  • reset - 重置终端设置并清屏
  • tput - 操作终端能力数据库(clear的实际实现)
  • stty - 修改和显示终端设置
  • script - 记录终端会话
  • history - 显示命令历史
  • echo - 显示一行文本(可用于发送ANSI序列)
  • printf - 格式化输出(可用于发送ANSI序列)