Quick Links

If you use Linux, you know how useful the command line can be for working with files, installing software, and launching programs. But it can be even more efficient if you run multiple commands at once.

Combining two or more commands on the command line is also known as "command chaining". We'll show you different ways you can combine commands on the command line.

Related: 10 Basic Linux Commands for Beginners

Option One: The Semicolon (;) Operator

The semicolon (;) operator allows you to execute multiple commands in succession, regardless of whether each previous command succeeds. For example, open a Terminal window (Ctrl+Alt+T in Ubuntu and Linux Mint). Then, type the following three commands on one line, separated by semicolons, and press Enter. This will give you a listing of the current directory (

        ls
    

), find out which directory you're currently in (

        pwd
    

), and display your login name (

        whoami
    

) all at once.

ls ; pwd ; whoami

You don't have to put spaces between the semicolons and the commands, either. You can enter the three commands as ls;pwd;whoami . However, spaces make the combined command more readable, which is especially useful if you're putting a combined command into a shell script.

01_combining_commands_with_semicolon_operator

Option Two: The Logical AND Operator (&&)

If you want the second command to only run if the first command is successful, separate the commands with the logical AND operator, which is two ampersands ( && ). For example, we want to make a directory called MyFolder and then change to that directory--provided it was successfully created. So, we type the following on the command line and press Enter.

mkdir MyFolder && cd MyFolder

The folder was successfully created, so the cd command was executed and we are now in the new folder.

We recommend using the logical AND operator rather than the semicolon operator most of the time (;). This ensures that you don't do anything disastrous. For example, if you run a command to change to a directory and then force remove everything in that directory recursively ( cd /some_directory ; rm -Rf * ), you could end up ruining your system if the directory change didn't happen. Not that we recommend you run a command to unconditionally remove all files in a directory at once.

02_combining_commands_with_logical_and_operator

Related: The Beginner's Guide to Shell Scripting: The Basics

Option Three: The Logical OR Operator (||)

Sometimes you might want to execute a second command only if the first command does not succeed. To do this, we use the logical OR operator, or two vertical bars ( || ). For example, we want to check to see if the MyFolder directory exists ( [ -d ~/MyFolder ] ) and create it if it doesn't ( mkdir ~/MyFolder ). So, we type the following command at the prompt and press Enter.

[ -d ~/MyFolder ] || mkdir ~/MyFolder

Be sure there is a space after the first bracket and before the second bracket or the first command that checks if the directory exists will not work.

In our example, the MyFolder directory does not exist, so the second command creates the directory.

03_combining_commands_with_logical_or_operator

Combining Multiple Operators

You can combine multiple operators on the command line, too. For example, we want to first check if a file exists ( [ -f ~/sample.txt ] ). If it does, we print a message to the screen saying so ( echo "File exists." ). If not, we create the file ( touch ~/sample.txt ). So, we type the following at the command prompt and press Enter.

[ -f ~/sample.txt ] && echo "File exists." || touch ~/sample.txt

In our example, the file didn't exist, so it was created.

04_using_two_different_operators

Here's a useful summary of each of the operators used to combine commands:

  •  A ; B  -- Run A and then B, regardless of the success or failure of A
  •  A && B  -- Run B only if A succeeded
  •  A || B  -- Run B only if A failed

All of these methods of combining commands can also be used in shell scripts on both Linux and Windows 10.

Related: How to Automatically Correct Spelling and Typos When Using "cd" on Linux

You can also automatically correct spelling and typos when using "cd" on the command line in Linux to avoid drastic consequences when combining commands.

Linux Commands

Files

tar · pv · cat · tac · chmod · grep ·  diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

Processes

alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap

Networking

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts