linux reset命令

reset命令用于重置终端设置,修复终端显示异常问题。它会重新初始化终端,清除屏幕,并将终端设置恢复为默认值。

语法格式

reset [选项]
reset [终端类型]

命令功能

  • 重置终端到默认设置
  • 清除终端屏幕内容
  • 修复终端显示乱码问题
  • 恢复正确的键盘输入行为
  • 重置终端属性(如回显、换行等)

📝 重要说明

  • reset实际上是tset命令的符号链接
  • 它会向终端发送初始化序列,恢复默认设置
  • clear命令更彻底,会重置所有终端属性
  • 在SSH会话或远程终端中特别有用

参数说明

参数 说明
终端类型 指定终端类型,如vt100、xterm、linux等。通常会自动检测
-e ch 设置擦除字符(默认为Ctrl+H)
-I 不发送终端初始化字符串
-Q 不显示设置终端类型的消息
-c 不读取~/.tsetrc配置文件
-w 不清除屏幕,只重置终端设置
--help 显示帮助信息
--version 显示版本信息

常用示例

示例1:基本用法 - 重置终端

当终端显示异常时,使用reset命令修复:

# 终端显示乱码或键盘输入异常时
$ reset

假设终端显示异常:

▯▯▯H▯e▯l▯l▯o▯▯▯W▯o▯r▯l▯d▯▯ # 乱码显示

输入reset命令后:

Erase set to delete. # 重置信息

# 终端恢复正常,显示干净的屏幕

示例2:重置但不清除屏幕

使用-w参数只重置设置不清除屏幕内容:

# 重置终端设置但保留屏幕内容
$ reset -w

# 这样不会清除当前屏幕上的输出
# 只重置终端的内部设置

示例3:指定终端类型

明确指定终端类型进行重置:

# 指定终端类型为xterm
$ reset xterm

# 指定终端类型为linux
$ reset linux

# 指定终端类型为vt100(传统终端)
$ reset vt100

示例4:修复二进制文件显示问题

当不小心用cat查看二进制文件导致终端乱码时:

# 不小心查看了二进制文件
$ cat /bin/ls
# 终端显示乱码,键盘输入可能也不正常

# 使用reset修复
$ reset
# 终端恢复正常

示例5:修复SSH会话

在SSH会话中修复终端问题:

# SSH连接到远程服务器后终端异常
$ ssh user@remote-server
# 登录后发现终端显示有问题

# 尝试以下命令修复
$ reset
# 或者
$ stty sane
$ tput reset

示例6:修复退格键问题

当退格键显示为^H或其他字符时:

# 退格键显示为^H而不是删除字符
$ echo "test^H^H^H"  # 按退格键显示^H

# 使用reset修复
$ reset

# 或者使用stty设置
$ stty erase ^H

示例7:在脚本中重置终端

在脚本执行后重置终端设置:

#!/bin/bash

# 保存当前终端设置
original_stty=$(stty -g)

# 修改终端设置执行某些操作
stty raw -echo
# 执行需要特殊终端设置的操作
read -n 1 keypress
echo "你按下了: $keypress"

# 恢复终端设置
stty "$original_stty"

# 或者使用reset彻底重置
reset

示例8:对比clear和reset

比较clearreset的区别:

# clear命令:只清除屏幕,不重置终端设置
$ clear

# reset命令:清除屏幕并重置所有终端设置
$ reset

# 查看它们的实际关系
$ ls -l /usr/bin/clear /usr/bin/reset
lrwxrwxrwx 1 root root     9 Jan 15  2020 /usr/bin/clear -> /usr/bin/tput
lrwxrwxrwx 1 root root     4 Jan 15  2020 /usr/bin/reset -> tset

示例9:使用转义序列重置

直接发送终端转义序列进行重置:

# 发送重置转义序列
$ echo -e "\033c"

# 在某些情况下也可以使用
$ tput reset

# 完整的终端重置序列
$ echo -e "\033[!p\033[?3;4l\033[4l\033>"

⚠️ 注意事项

  1. 谨慎使用reset会清除当前屏幕的所有内容
  2. 远程连接:在SSH或telnet会话中,reset可能需要一些时间生效
  3. 脚本中使用:在脚本中修改终端设置后,最好恢复原设置
  4. 不可逆:reset后无法恢复之前的屏幕内容
  5. 特殊终端:某些特殊终端程序可能不完全兼容reset

💡 实用技巧

  1. 快捷键替代:在某些终端中,可以使用Ctrl+Shift+R或Ctrl+L
  2. 逐步修复:先尝试stty sane,如果不行再用reset
  3. 保存输出:在reset前,可以使用script命令保存终端会话
  4. 诊断问题:使用stty -a查看当前终端设置
  5. 预防措施:避免直接用cat查看二进制文件,使用hexdumpod

常见问题

Q: reset和clear有什么区别?

A: clear只清除屏幕内容,而reset会重置所有终端设置并清除屏幕。reset更彻底,能修复终端显示和输入问题。

Q: reset命令执行后为什么看不到输出?

A: reset会清除屏幕,所以执行瞬间的输出可能被立即清除了。可以使用reset -w来避免清除屏幕。

Q: 如何在不丢失工作的情况下修复终端?

A: 可以先尝试stty sane,它不会清除屏幕。如果不行,可以使用screentmux保存会话状态。

Q: reset后终端还是异常怎么办?

A: 可能需要关闭当前终端窗口,重新打开一个新的。或者检查终端程序的设置。

Q: 可以在脚本开头使用reset吗?

A: 可以,但要注意它会清除屏幕。更好的做法是使用tput resettput clear

相关命令

  • clear - 清除终端屏幕
  • stty - 修改和显示终端设置
  • tset - 终端初始化(reset的实际命令)
  • tput - 操作终端能力数据库
  • tty - 显示当前终端设备文件名
  • script - 记录终端会话
  • screen - 终端多路复用器
  • tmux - 终端多路复用器