apt-get update, dist-upgrade, autoremove, autoclean в одной команде sudo - PullRequest
10 голосов
/ 23 июля 2010

Моя обычная команда для поддержания машины в актуальном состоянии довольно многословна, и она может привести к нескольким запросам пароля, если какая-либо команда занимает много времени:

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove && sudo apt-get autoclean

Я хотел бы сократитьэто до одной команды (желательно без использования глобального псевдонима).

Решение на основе ответа @ amra и другой совет :

sudo sh -c 'apt-get update && apt-get upgrade --yes && if [ -f /var/run/reboot-required ]; then echo You should reboot; fi' 

Ответы [ 2 ]

18 голосов
/ 23 июля 2010

Попробуйте

sudo sh -c "apt-get -y update;apt-get -y dist-upgrade;apt-get -y autoremove;apt-get -y autoclean"
1 голос
/ 23 июля 2010

Оператор «&&» можно использовать для выполнения команды «cmd2», если и только если «cmd1» был выполнен без ошибок:

(cmd1 && cmd2)

Но это работает только в bash напрямую, без «sudo»'впереди.

Итак, чтобы работать как положено, мы можем использовать следующую команду:

sudo /bin/sh -c "apt-get update && apt-get dist-upgrade && apt-get autoremove && apt-get autoclean"

Обратите внимание, что предложенный amra ответ не совпадает с приведенным выше: Команды, разделенные ";"выполняются последовательно без учета кода выхода предыдущей команды.При использовании «&&» для разделения команд учитывается код выхода.Таким образом, если у нас есть «cmd1 && cmd2», cmd2 выполняется только в том случае, если код выхода cmd1 был 0 (т. Е. Cmd1 не был ошибочным).

...