Возможно ли ввести 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
предотвращает вызов самой функции в бесконечном цикле.