在 bash 指令之前和之後自動新增位

在 bash 指令之前和之後自動新增位

是否可以輸入foo並讓 bash 自動轉換為time foo && notify-send "PLAYBOOK COMPLETE"

我特別希望這僅適用於ansible-playbook命令(對於那些不熟悉 Ansible 的人來說,可能會跟隨任意數量的選項、參數等,ansible-playbook因此簡單的別名可能無法解決問題),這樣當一個很長的劇本時我會收到通知已完成。

每個 bash 命令之前的命令看起來很有希望,但不幸的是對我來說並沒有正確工作。

答案1

具有外殼功能:

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防止在無限循環中呼叫函數本身。

相關內容