Как автоматически выполнять команду каждый раз после завершения определенной команды?

Как автоматически выполнять команду каждый раз после завершения определенной команды?

Пример: После add-apt-repositoryзавершения процесса немедленно запустить его apt-get update— без необходимости вводить команду вручную.

Есть ли способ это сделать? Можно ли установить такую ​​комбинацию без использования пароля sudo? (хотя я не против любого варианта)

Я спрашиваю следующее:Как мне связать две команды вместе, чтобы всякий раз, когда я выполняю определенную команду, онавсегдавыполняет связанную команду после нее?

решение1

Как обычно,

sudo bash -c "command1; command2"

Если вы хотите запустить command2 только после успешного завершения command1, вы можете использовать as &&вместо ;.

sudo bash -c "command1 && command2"

Для вашего примера я буду использовать следующую команду.

sudo bash -c "add-apt-repository <repo> && apt-get update"

решение2

Существуют различные проблемы, связанные с этим с помощью псевдонима или простой функции bash, но вы можете написать небольшую оболочку для команды и вставить ее в /usr/local/binтот путь, который имеет приоритет.

ЭтоМаленький трюк, чтобы создать скрипт и одновременно изменить его права.
Он выгрузит исполняемый скрипт-оболочку в /usr/local/bin/add-apt-repository.

sudo install -b -m 755 /dev/stdin /usr/local/bin/add-apt-repository << 'EOF'
#!/bin/sh
/usr/bin/add-apt-repository "$@"
apt-get update
EOF 

Чтобы отменить это, просто удалите /usr/local/bin/add-apt-repository.

Если вы хотите сделать что-то более полезное (например, создать ссылку apt-get install, apt-get updateчтобы всегда обновлять ее перед установкой), нам просто нужно расширить скрипт, чтобы просмотреть аргументы.

sudo install -b -m 755 /dev/stdin /usr/local/bin/apt-get << 'EOF'
#!/bin/sh
if [ "$1" = "install" ] ; then
    /usr/bin/apt-get update
fi
/usr/bin/apt-get "$@"
EOF 

Хотя учтите, что это запустит обновление раньшекаждый apt-get installзвонок. Это может показаться полезным, но на практике может оказаться очень утомительным.

решение3

Для выполнения определенных команд в определенной последовательности используется скриптинг оболочки. Все, что вам нужно сделать, это - Открыть терминал, нажав Ctrl+ Alt+ T И следовать шагам -
1. Введите gedit filename.sh
2. После ввода этой команды откроется текстовый редактор, в котором вы можете ввести необходимые команды по одной в каждой строке. Например,
sudo add-apt-repository
apt-get update
3. После ввода всех команд сохраните и выйдите либо с помощью графического интерфейса, либо нажав Ctrl+ Sи Ctrl+ Q.
4. Теперь вы вернетесь обратно в терминал. Запустите sh filename.shна терминале, и ваши команды будут выполнены, при условии, что в ваших командах нет ошибок.
Кроме того, если вы войдете из учетной записи суперпользователя (root), вам не придется вводить sudoкоманду.

решение4

Самый простой способ сделать это — запустить:

sudo add-apt-repository <ppa_name> && sudo apt-get update

Если первая команда выполнена успешно, будет выполнена вторая.

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