未执行或执行中的命令
-
取消未执行的命令
- 输入命令后未按回车:直接按
Ctrl + C
取消当前行。 - 输入中途放弃:按
Ctrl + C
或Ctrl + U
(清除整行)。
- 输入命令后未按回车:直接按
-
终止正在运行的命令
- 按
Ctrl + C
强制终止前台进程。 - 终止后台进程:
jobs # 查看后台任务列表 kill %1 # 终止任务编号为1的进程
- 按
-
暂停并管理进程
- 按
Ctrl + Z
挂起当前进程。 - 恢复进程到前台:
fg
- 恢复进程到后台:
bg
- 彻底终止挂起进程:
kill %1
(数字为任务编号)
- 按
已执行命令的补救
(1) 文件操作类命令
-
rm
删除文件
预防措施:- 用
trash-cli
替代rm
(安装:sudo apt install trash-cli
):trash-put file.txt # 文件进"回收站" trash-list # 查看回收站内容 trash-restore # 恢复文件
- 设置别名提示确认:
echo 'alias rm="rm -i"' >> ~/.bashrc # 删除前询问 source ~/.bashrc
补救措施:
- 立即卸载分区:
sudo umount /dev/sda1
(防止数据覆盖)。 - 使用数据恢复工具(如
testdisk
、photorec
),但成功率取决于磁盘写入情况。
- 用
-
mv
或cp
覆盖文件- 预防:设置
noclobber
禁止覆盖:set -o noclobber # 启用保护 echo "data" >| file # 强制覆盖需用 >|
- 补救:从备份恢复(如版本控制、快照)。
- 预防:设置
-
文件修改(
echo >
、sed -i
)- 提前备份:
cp file.txt file.txt.bak # 手动备份
- 使用版本控制工具(如
git
)管理重要目录。
- 提前备份:
(2) 配置修改类命令
- 恢复配置文件
- 若修改了
~/.bashrc
、/etc/fstab
等:cp ~/.bashrc.bak ~/.bashrc # 从备份还原
- 无备份时:尝试从默认配置复制(如
/etc/skel/.bashrc
)。
- 若修改了
历史命令修正
-
调用历史命令
- 按
Ctrl + R
搜索历史命令,编辑后执行。 - 用
!n
执行历史记录中第n
条命令(通过history
查看编号)。
- 按
-
修改上一条命令
- 输入
fc
编辑上一条命令(默认用Vi编辑器)。 - 快速修正:
^正确内容^ # ^rm^mv^ 将上条的 rm 替换为 mv
- 输入
预防大于补救:关键实践
-
高危操作四步法:
# 1. 用 ls 确认路径 ls /path/to/dir/* # 2. 执行前 echo 预览 echo rm -r /path/to/dir/* # 3. 确认无误后执行 rm -r /path/to/dir/*
-
自动化备份:
- 定时任务备份:
cron + rsync
- 使用
etckeeper
备份/etc
目录。
- 定时任务备份:
-
限制权限:
- 日常操作避免使用
root
,用sudo
临时提权。 - 敏感命令设置
alias
增加交互确认。
- 日常操作避免使用
场景 | 最佳应对方案 |
---|---|
未执行/执行中命令 | Ctrl + C / Ctrl + Z + kill |
文件删除 (rm ) |
用 trash-cli 替代 + 及时卸载分区 |
文件覆盖 (mv , cp ) |
启用 noclobber + 备份 |
配置误改 | 备份 + 版本控制 (git ) |
历史命令重用 | Ctrl + R 或 fc 编辑 |
重要提示:
rm -rf /
等命令无法撤销!操作前务必验证路径。- 生产环境建议用
--dry-run
参数(如rsync -n
)模拟执行。- 定期备份是终极保障,推荐工具:
rsync
,BorgBackup
,Timeshift
。
引用说明:本文方法基于GNU Bash标准操作,工具建议参考trash-cli官方文档、Bash手册。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7723.html