如何在 Linux 或 Unix 下使用 sudo 运行多个命令
sudo 命令用于以另一个用户(通常是 root 用户)的身份执行命令。本快速教程向您展示如何使用 sudo 命令通过 Linux 或 Unix shell 运行多个命令。
sudo 语法运行多个命令
语法是:
sudo sh -c 'command1 && command2'
sudo -- sh -c 'command1 && command2'
sudo -u userNameHere -- sh -c 'command1; command2'
sudo -- sh -c 'command1; command2'
sudo -- bash -c 'command1; command2'
sudo -i -- 'command1; command2; command3'
sudo -i -- sh -c 'command1 && command2 && command3'
sudo -u oracle -s -- "cmd1; cmd2; cmd3"
示例
运行日期和“我是谁”命令:
$ sudo -- sh -c 'date; who am i'
示例输出:
[sudo] password for vivek: Tue May 2 19:52:08 IST 2017 vivek pts/0 2017-05-02 18:44 (10.8.0.2)
您可以以 mysql 用户身份运行命令:在apt-get 命令
$ sudo -u mysql -- sh -c "/home/mysql/backup.sh; /home/mysql/mirror.py"
的帮助下使用 sudo 一次性更新您的服务器:
$ sudo -- sh -c 'apt-get update && sudo apt-get -y upgrade'
动图 01:sudo 命令实际运行
了解 sudo 命令选项
要运行多个 sudo 命令,我们使用以下选项:
- --:A--表示选项的结束并禁用 sudo 命令的进一步选项处理。
- sh -c :使用给定的命令运行 sh shell
- bash -c :同上。
- 'apt-get update && sudo apt-get -y upgrade':首先更新 repo,如果更新成功则应用升级。
- -i:将目标用户的密码数据库条目指定的 shell 作为登录 shell 执行。这意味着登录特定的资源文件(如 .profile、.bash_profile 或 .login)将被 shell 读取。
- -s:如果设置了 SHELL 环境变量,则运行该变量指定的 shell,或者运行调用用户的密码数据库条目指定的 shell。
关于在 shell 脚本中使用 sudo 命令的说明
下面是一个示例 shell 脚本,展示了如何使用 sudo 或运行多个命令:
#!/bin/bash echo "Running commands as a root user..." sudo -- -sh -c <<EOF apt-get update apt-get -y upgrade apt-get -y install nginx apt-get -y remove nano apt-get clean echo "All done." EOF
关于将 sudo 与 bash shell 别名结合使用的注意事项
Shell 别名的语法如下:
alias foo="sudo -- sh -c 'cmd1 && cmd2'" alias bar='sudo -- sh -c "cmd1 && cmd2"'
例如,将以下内容添加到 ~/.bashrc 或 ~/.bash_aliases 文件:
# update debian/ubuntu box using apt # command line when type update alias update='sudo -- sh -c "apt update && apt upgrade"'
请参阅如何创建永久的 Bash 别名和30 个方便的 bash shell 别名以获取更多信息。
结论
您学习了如何在 Linux 或类 Unix 系统下使用 sudo 命令运行多个命令。有关更多信息,请通过键入以下命令查看 sudo 手册页或访问此页面:
man sudo