如何在Linux或Unix下的sudo中运行多个命令

时间:2020-01-09 10:39:38  来源:igfitidea点击:

如何从bash shell运行两个命令?
如何运行apt-get更新和apt-get -y升级,而不必从Ubuntu Linux AWS云服务器上的命令行中两次执行sudo命令。
如何在sudo command1 && command2中使用两个命令?

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'

例子

运行date以及who am i:

$ sudo -- sh -c 'date; who am i'

输出示例:

[sudo] password for Hyman: 
Tue May  2 19:52:08 IST 2016
Hyman    pts/0        2016-05-02 18:44 (10.8.0.2)

您可以以mysql用户身份运行命令:

$ sudo -u mysql -- sh -c "/home/mysql/backup.sh; /home/mysql/mirror.py"

在apt-get命令的帮助下使用sudo一次性更新服务器:

$ sudo -- sh -c 'apt-get update && sudo apt-get -y upgrade'

了解sudo命令选项

  • --A表示选项结束,并禁用sudo命令的进一步选项处理。
  • sh -c:使用给定命令运行sh shell
  • 'apt-get update && sudo apt-get -y upgrade'首先更新仓库,如果更新成功,则应用升级。

关于在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"'