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

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

Существует ли способ сделать это? Действительно ли возможно установить такую комбинацию без использования sudo пароль? (хотя я не возражаю так или иначе),

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

-5
задан 25 November 2015 в 14:29

4 ответа

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

Это мало приема для создания сценария и chmod это одновременно .
Это выведет исполняемый сценарий обертки в /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 вызов. Это могло бы звучать полезным, но могло быть действительно утомительно на практике.

4
ответ дан 26 July 2019 в 14:23

Как обычно,

sudo bash -c "command1; command2"

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

sudo bash -c "command1 && command2"

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

sudo bash -c "add-apt-repository <repo> && apt-get update"
4
ответ дан 26 July 2019 в 14:23

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

1
ответ дан 26 July 2019 в 14:23

Самый легкий способ сделать это состоит в том, чтобы работать:

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

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

0
ответ дан 26 July 2019 в 14:23

Другие вопросы по тегам:

Похожие вопросы: