sudo cd /media && ls && for i in 1 2; do echo $i; done
-
sudo cd /media
只有 cd 这一步 是管理员权限,执行完就结束。
-
&& ls
变回普通用户执行。
-
for、do、if、${变量}这类属于「Shell 内置语法」
Linux 不允许写:sudo for、sudo if
直接判定:语法错误。
这种没有 for/if/ 变量,纯独立小程序,随便分开加:
sudo apt update && sudo apt install nano && sudo ls /media
✅ 为什么没问题?apt、install、ls都是外部独立程序,每条单独加 sudo 完全合法。
整条打包进sudo sh -c ' '单引号里,全程管理员权限:
sudo sh -c 'cd /media && ls && for i in 1 2; do echo $i; done'
-
单纯工具命令(ls、7z、cp、apt、rm)→ 每条前面单独加sudo,用&&连接,随便写。
-
带 cd 切换目录 + for 循环 + if 判断 + 变量 ${xxx}→ 禁止分开加 sudo,必须全包进:sudo sh -c ' 整条命令'