自动在 bash 命令前后添加位

自动在 bash 命令前后添加位

是否可以输入foo并让 bash 自动将其转换为time foo && notify-send "PLAYBOOK COMPLETE"

我特别希望这仅适用于ansible-playbook命令(对于那些不熟悉 Ansible 的人来说,可能会有任意数量的选项、参数等,ansible-playbook因此简单的别名可能不会起作用),以便在长剧本完成时收到通知。

每个 bash 命令前的命令看起来很有希望,但不幸的是对我来说不能正常工作。

答案1

使用 shell 函数:

function ansible-playbook { time command ansible-playbook "$@" && notify-send "PLAYBOOK COMPLETE"; }

或者

ansible-playbook () { time command ansible-playbook "$@" && notify-send "PLAYBOOK COMPLETE"; }

后一种形式是定义函数的 POSIX 方式,但ansible-playbook别名(如果有)可能会干扰。前一种形式不受干扰但不可移植。如果没有别名并且您正在使用 Bash,那么任何一种形式都可以工作。

或者您可以编写一个以类似方式工作的包装器脚本。如果您命名它,ansible-playbook请确保它调用真实的 ansible-playbook,而不是其本身。在上面的函数中,该词command可防止在无限循环中调用函数本身。

相关内容