13

我通常用于使机器保持最新的命令相当冗长,如果任何命令需要很长时间,它可能会导致多个密码提示:

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' 
4

2 回答 2

22

尝试

sudo sh -c "apt-get -y update;apt-get -y dist-upgrade;apt-get -y autoremove;apt-get -y autoclean"
于 2010-07-23T09:12:32.340 回答
1

当且仅当 'cmd1' 没有错误地执行时,才可以使用 '&&' 运算符来执行命令 'cmd2':

(cmd1 && cmd2)

但这仅适用于 bash 直接,前面没有“sudo”。

因此,为了按预期工作,我们可以使用以下命令:

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

注意amra提出的答案和上面的命令不一样:Commands separator by ";" 在不考虑前一个命令的退出代码的情况下按顺序执行。使用“&&”分隔命令时,会考虑退出代码。因此,如果我们有“cmd1 && cmd2”,那么只有当 cmd1 的退出代码为 0 时才会执行 cmd2(即 cmd1 没有失败)。

于 2010-07-23T09:13:58.967 回答