2010-07-23 16 views
7

Moje zwykłe polecenie zachowania aktualności komputera jest dość szczegółowe i może skutkować więcej niż jednym pytaniem o hasło, jeśli jakakolwiek komenda trwa długo czas:apt-get update, dist-upgrade, autoremove, autoollean w jednym poleceniu sudo

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

Chciałbym to skrócić do jednego polecenia (najlepiej bez użycia globalnego aliasu).

Solution podstawie @amra's answer i another tip:

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

try: * sudo -s * następnie użyć: * apt-get update && apt-get dist-upgrade && apt-get autorove && apt-get autoclean; wylogowanie * – Javaguru

+0

Należy do superuser.com –

+0

http://www.gnu.org/software/bash/manual/bashref.html#Command-Grouping – weakish

Odpowiedz

15

Spróbuj

sudo sh -c "apt-get -y update;apt-get -y dist-upgrade;apt-get -y autoremove;apt-get -y autoclean" 
+0

Czy istnieje powszechna nazwa, którą ludzie mogą przypisywać do tworzenia niestandardowego polecenia mega-upgrade, np. to? (Zrobiłem nazwę mega-upgrade;) – Mikeumus

+0

Nazwałbym to: 'alias apt-update-dist-upgrade-autorove-autoclean = 'sudo sh -c" apt-get -y update; apt-get -y dist -upgrade; apt-get -y autoremove; apt-get -y autoclean ""; Ale wolałbym tylko "apt-get upgrade" i sam zdecyduję, kiedy "dist-upgrade". – rubo77

1

Można użyć operatora '& &' wykonywać polecenia 'cmd2' wtedy i tylko wtedy, gdy 'cmd1' został wykonany bez błędów:

(cmd1 && cmd2) 

Ale działa to tylko w bash bezpośrednio, bez "sudo" z przodu.

Tak, aby pracować zgodnie z oczekiwaniami, możemy użyć następującego polecenia:

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

Należy zauważyć, że odpowiedź proponowany przez Amra nie taka sama jak w powyższym poleceniu: poleceń rozdzielonych przez „;” wykonywane są sekwencyjnie bez uwzględnienia kodu zakończenia poprzedniego polecenia. Podczas używania "& &" w celu oddzielenia poleceń, brany jest pod uwagę kod wyjścia. Tak więc, jeśli mamy "cmd1 & & cmd2", cmd2 jest wykonywane tylko wtedy, gdy kod zakończenia cmd1 wynosi 0 (tzn. Cmd1 nie zawiódł).