You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现按下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

火山引擎 最新活动