我可以执行多行 sudo 命令吗?

the*_*dnp 8 command-line

这个问题涉及到另一个问题。如果我粘贴@kyodake 的建议代码,在终端中一次性粘贴它会起作用吗?

还是我应该一行一行地走?

Ser*_*nyy 11

有几种方法可以让多个命令与sudo.

第一个最适合您的用例。其他是为了探索替代方案而添加的;它们可能不适合您的特定需求,但可能在将来对您或其他用户有用。

方法#1:最干净、最简单

将所有内容放入脚本中,例如myscript.sh,使用 使文件可执行chmod 755 myscript.sh,然后使用sudo myscript.sh

方法#2:一长串命令

您需要具有超级用户权限的东西才能运行多个命令。那将是 shell, ( 任何 shell,bash或者sh) 。Shell 有一个-c标志,它告诉它们运行一个命令或一组由分号分隔的命令;。简单的例子:sudo bash -c 'apt-get update; apt-get upgrade'。特别是,kyodake 的回答可以像这样重新完成:

sudo bash -c 'apt-get update;apt-get install --reinstall aptitude deborphan mate-desktop; aptitude remove '?and(?reverse-depends(unity),?not(?reverse-depends(?exact-name(mate-desktop))))';aptitude remove '?and(?reverse-depends(ubuntu),?not(?reverse-depends(?exact-name(mate-desktop))))';aptitude remove '?and(?reverse-depends(gnome),?not(?reverse-depends(?exact-name(mate-desktop))))';apt-get install --reinstall mate-desktop;deborphan;apt-get --purge remove $(deborphan);deborphan --libdevel;apt-get --purge remove $(deborphan --libdevel);deborphan --find-config;dpkg --purge $(deborphan --find-config);apt-get autoremove;apt-get clean;reboot'
Run Code Online (Sandbox Code Playgroud)

冗长?是的。当您只需要使用 sudo 运行几个命令时,这种方法效果更好。

方法 #3:玩 sudo 超时

默认情况下,sudo权限在 15 分钟后超时。因此,如果您确定所有这些命令不会花费那么长时间,您可以运行第一个命令,sudo并且会提示您输入密码;对于所有后续命令,您将不会收到提示,但您仍然需要键入sudo.

方法#4:使用root shell

正如 kyodake 在答案中所建议的那样,登录到 root shellsudo -i以使用 root 权限,直到您exit. 请注意,出于安全原因,不建议这样做。除非你 100% 确定你会记得在完成工作后注销并且没有人会进入你的 root shell,然后......根据你的判断使用这种方法。

  • “默认情况下,`sudo` 权限在 15 分钟后超时”——这并不意味着所有命令都将使用 `sudo` 权限执行 15 分钟,它只是意味着你不必每次使用时都输入密码`须藤`。 (4认同)