如何编写可监控终端命令并拦截rm操作的Bash脚本?
实现终端命令监控与确认脚本(以rm为例)
要实现监控终端输入并对特定命令(如rm)添加确认环节,最直接的方式是用Bash函数覆盖系统原命令,以下是具体实现:
脚本代码
# 定义自定义rm函数,覆盖系统默认rm rm() { # 提示用户确认操作 read -p "你确定要执行删除操作吗?输入Y确认:" confirm # 判断用户输入是否为Y(不区分大小写) if [[ "$confirm" =~ ^[Yy]$ ]]; then # 执行真实的rm命令,传递所有参数 command rm "$@" else # 取消操作提示 echo "删除操作已取消" fi }
使用说明
- 临时生效:直接将上述代码粘贴到终端中执行,当前会话内的
rm命令就会触发确认提示。 - 永久生效:将代码添加到你的
~/.bashrc或~/.bash_profile文件末尾,执行source ~/.bashrc(或对应文件)使修改立即生效,之后每次打开终端都会自动加载这个函数。
扩展说明
- 如果需要监控其他命令(如
mv、cp),可以用同样的逻辑编写对应的函数,比如:mv() { read -p "你确定要移动文件吗?输入Y确认:" confirm if [[ "$confirm" =~ ^[Yy]$ ]]; then command mv "$@" else echo "移动操作已取消" fi } - 用
command关键字是为了避免函数递归调用自身,确保执行的是系统原生的命令。 - 正则表达式
^[Yy]$用来匹配大小写的Y,保证用户输入y或Y都能触发执行。
内容的提问来源于stack exchange,提问作者zzzr
相关产品推荐
相关产品推荐

