apt-get update、dist-upgrade、autoremove、autoclean 在单个 sudo 命令中

发布于 2024-09-11 06:16:12 字数 669 浏览 3 评论 0原文

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

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' 

My usual command for keeping the machine up to date is rather verbose, and it can result in more than one password prompt if any command takes a long time:

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

I'd like to shorten this down to one command (preferably without using a global alias).

Solution based on @amra's answer and another tip:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海风掠过北极光 2024-09-18 06:16:12

尝试

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

Try

sudo sh -c "apt-get -y update;apt-get -y dist-upgrade;apt-get -y autoremove;apt-get -y autoclean"
当梦初醒 2024-09-18 06:16:12

可以使用“&&”操作符执行命令“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”,则仅当 cmd1 的退出代码为 0(即 cmd1 没有失败)时才执行 cmd2。

One can use the '&&' operator to execute command 'cmd2' if and only if 'cmd1' has been executed without errors:

(cmd1 && cmd2)

But this only works in bash directly, without 'sudo' in front.

So, in order to work as expected, we can use the following command:

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

Note that the answer proposed by amra does not the same as the above command:
Commands separated by ";" are executed in sequence without taking the exit code of the previous command into account.
When using "&&" to separate the commands, the exit code is taken into account.
Thus, if we have "cmd1 && cmd2", cmd2 is only executed if the exit code of cmd1 was 0 (i.e. cmd1 did not fail).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文