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

Связанный контент