如何实现按下Ctrl+S时自动执行Bash脚本
如何实现按下Ctrl+S时自动执行Bash脚本
嘿,这个痛点我太懂了——每次改完脚本还要手动敲./demo_script.sh确实够烦的!下面给你几个实用的方案,按需选就行:
利用编辑器的自动命令(推荐,精准对应保存动作)
如果你用Vim编辑脚本,直接在~/.vimrc里加一行配置:autocmd BufWritePost demo_script.sh !./demo_script.sh这行命令的意思是:每当你完成
demo_script.sh的保存操作(不管你用的是:w还是映射的Ctrl+S),Vim会自动帮你执行这个脚本。要是想对所有Shell脚本生效,把demo_script.sh改成*.sh就行。要是用VS Code这类编辑器,也可以装个类似"Run on Save"的插件,配置一下触发命令为
./demo_script.sh,同样能实现按Ctrl+S就自动执行。用文件监听工具(通用性强,适配所有编辑器)
Linux下可以用inotifywait这个工具来监听文件的保存事件,先安装它:# Debian/Ubuntu系 sudo apt install inotify-tools # RHEL/CentOS系 sudo dnf install inotify-tools然后写个简单的监听脚本
watch_demo.sh:#!/bin/bash while inotifywait -e close_write demo_script.sh; do echo "脚本已更新,自动执行中..." ./demo_script.sh done给它加执行权限:
chmod +x watch_demo.sh,然后在另一个终端窗口运行它。之后不管你用什么编辑器修改并保存demo_script.sh(按Ctrl+S),这个监听脚本都会立刻帮你执行目标脚本。直接绑定终端快捷键(简单粗暴,但不够精准)
注意:默认情况下Ctrl+S是终端的"暂停输出"功能,得先取消这个默认绑定:stty stop undef然后在
~/.bashrc里添加一行快捷键绑定:bind '"\C-s": "./demo_script.sh\n"'重启终端或者执行
source ~/.bashrc生效后,按Ctrl+S就会直接执行脚本。但这个方法不管你有没有保存文件都会触发,适合你确定按Ctrl+S就是要执行脚本的场景。
备注:内容来源于stack exchange,提问作者lousycoder




