clear命令用于清除终端屏幕。它会清空当前终端窗口中的所有输出,让屏幕回到干净的状态,类似于图形界面中的"清屏"功能。
clear [选项]
clear实际上是tput clear命令的快捷方式| 参数 | 说明 |
|---|---|
-T 类型 |
指定终端类型。通常会自动检测,不需要手动指定 |
-V |
显示版本信息 |
-x |
不清除滚动缓冲区(只清除可视区域) |
--help |
显示帮助信息 |
| 特点 | clear | reset |
|---|---|---|
| 主要功能 | 清除屏幕显示 | 重置终端设置并清除屏幕 |
| 影响范围 | 只影响显示内容 | 影响所有终端设置(字符集、回显等) |
| 执行速度 | 快速 | 较慢 |
| 适用场景 | 日常清屏 | 终端显示异常时修复 |
| 快捷键 | Ctrl+L | 无通用快捷键 |
直接使用clear命令清除屏幕:
# 终端中有很多输出
$ ls -la
$ pwd
$ whoami
$ date
# ... 很多其他命令输出
# 清除屏幕
$ clear
# 屏幕变为空白,光标在左上角
大多数终端支持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]
# 屏幕清空
$ _
使用-x参数不清除滚动缓冲区:
# 清除屏幕但保留滚动缓冲区的内容
$ clear -x
# 这样可以通过滚动条查看之前的内容
# 但当前可视区域会被清空
在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)"
直接使用ANSI转义序列清除屏幕:
# 使用echo发送清屏序列
$ echo -e "\033[2J"
# 清屏并移动光标到左上角
$ echo -e "\033[2J\033[H"
# 这与clear命令的效果相同
结合其他命令使用:
# 清屏后立即执行命令
$ clear && ls -la
# 或者
$ clear; pwd
# 在管道中使用
$ echo "正在清屏..." && sleep 1 && 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 # 效果相同
在~/.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
}
检查不同终端的清屏行为:
# 检查终端类型
$ echo $TERM
xterm-256color
# 对于不同终端,clear的行为可能略有不同
# 但通常都能正常工作
# 如果clear有问题,可以尝试
$ tput clear
$ printf "\033c"
cl然后按Tab键自动补全为clearclear && command可以在清屏后立即执行新命令A: 不会。clear只清除屏幕显示,不会影响bash的历史记录。历史记录保存在~/.bash_history文件中。
A: 大多数终端模拟器都有滚动条,可以向上滚动查看被清除的内容。也可以使用script命令记录整个会话。
A: 功能上完全相同。Ctrl+L是clear的键盘快捷键。
A: 可能是终端缓冲区设置问题。可以尝试reset命令或调整终端设置。
A: 可以创建别名覆盖clear命令:alias clear='echo "clear is disabled"'
reset - 重置终端设置并清屏tput - 操作终端能力数据库(clear的实际实现)stty - 修改和显示终端设置script - 记录终端会话history - 显示命令历史echo - 显示一行文本(可用于发送ANSI序列)printf - 格式化输出(可用于发送ANSI序列)