How to run multiple commands in sudo under Linux or Unix

ADVERTISEMENTS



sudo syntax to run multiple commands

I am a new Linux user. How do I run two commands from a bash shell? I need to run apt-get update and apt-get -y upgrade without typing sudo command two times from a command line on Ubuntu Linux AWS cloud server. How can I two commands in sudo ‘command1 && command2’?The sudo command used to execute a command as another user typically as a root user. This quick tutorial shows you

The syntax is:

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'

Examples

Run date and who am i command:

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

Sample outputs:

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

You can run command as mysql user:

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

Update your server in a single go using sudo with the help of apt-get command:

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

Sample outputs:



Understanding sudo command options

-- : A — signals the end of options and disables further option processing for sudo command. sh -c : Run sh shell with given commands 'apt-get update && sudo apt-get -y upgrade' First update repo and apply upgrades if update was successful.

A note about using sudo command in a shell script

Here is a sample shell script that shows how to use or run multiple commands with 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 #!/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

A note about using sudo with bash shell aliases

The syntax is as follows for shell aliases:

alias foo = "sudo -- sh -c 'cmd1 && cmd2'" alias bar = 'sudo -- sh -c "cmd1 && cmd2"' alias foo="sudo -- sh -c 'cmd1 && cmd2'" alias bar='sudo -- sh -c "cmd1 && cmd2"'

For example add the following to ~/.bashrc or ~/.bash_aliases file:

# update debian/ubuntu box using apt # command line when type update alias update = 'sudo -- sh -c "apt update && apt upgrade"' # update debian/ubuntu box using apt # command line when type update alias update='sudo -- sh -c "apt update && apt upgrade"'

Conclusion

You learned how to run multiple commands using sudo command under a Linux or Unix-like systems. For more info see sudo man page by typing the following command or visit this page here:

man sudo