如何在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"'