如何在Linux中同时运行多个命令

在Linux中,要执行任何任务,我们需要在终端上执行适当的命令。 如果需要更高的效率,可以在Linux中同时运行多个命令。 这篇文章将迅速教您如何根据不同的情况或条件在Linux中运行多个命令。

如何在Linux中同时运行多个命令?

有几种运算符可用于同时在Linux中运行多个命令,例如分号或;逻辑AND运算符和逻辑OR运算符。

  • 使用分号运算符“;”

分号或“;”运算符当命令之间用“;”分隔时,允许您在Linux中同时运行多个命令。

分号运算符的基本语法:

Command1;Command2;Command3;....;CommandN

[[email protected] ~]# ls;date;df
anaconda-ks.cfg  epel-release-6-8.noarch.rpm       htop-1.0.2                    install.log.syslog  mytable.sh  Pictures   mytest      mytest4.sh
Desktop          figlet-2.2.2-1.el6.rf.x86_64.rpm  htop-1.0.2.tar.gz             man                 name.txt    Public     mytest1.sh  mytest5.sh
Documents        for_loop_test.sh                  htop-2.0.2-2.fc26.x86_64.rpm  Music               p           rpmbuild   mytest2.sh  mytest.sh
Downloads        ftp-0.17-51.1.el6.x86_64.rpm      install.log                   mygrep              –p          Templates  mytest3.sh  Videos
Sun Jun 06 21:10:51 BDT 2017
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/vg_destroyer-lv_root
                      16034576   8763864   6434580  58% /
tmpfs                  1956784        36   1956748   1% /dev/shm
/dev/sda1               495844     37181    433063   8% /boot
/dev/mapper/vg_andreyex-lv_andreyex
                        198337      5647    112870   4% /andreyex
/dev/sde1              1245608      3356   1165674   1% /home
[[email protected] ~]#

上一个命令是否成功无关紧要。 即使一个命令失败,也将执行下一个命令。 这在shell脚本编写中非常有用。

使用逻辑运算符“ &&”

有时我们只需要在第一个命令成功完成的情况下执行第二个命令即可,而不是分号运算符。

逻辑运算符的基本语法:

Command1 && Command2 && .... && CommandN

逻辑运算符的示例。

[[email protected] tmp]# mkdir /tmp/data && cd /tmp/data

在上面的示例中,我们在目录部分“ / tmp”下创建了一个名为“ data”的文件夹或目录。 由于我们已经成功创建了/ tmp / data目录,因此我们可以导航到“ / tmp / data”目录。

为了再次检查这种情况,请再次运行相同的命令,如下所示:

[[email protected] ~]# mkdir /tmp/data && cd /tmp/data
mkdir: cannot create directory `/tmp/data': File exists
[[email protected] ~]#

在上面的命令输出中,“ mkdir / tmp / data”失败,因为它已经存在。 系统不允许第二条命令运行。

与分号运算符相比,建议使用逻辑AND运算符,因为它将检查前一个命令的成功或失败状态。 为了解释这一点,让我们看一个例子。

需求:

  1. 转到目录/ tmp / data1
  2. 删除其中的所有文件。
[[email protected] data]# pwd
/tmp/data
[[email protected] data]# ls -ltr
total 0
-rw-r--r-- 1 root root 0 Jun 06 21:16 3.txt
-rw-r--r-- 1 root root 0 Jun 06 21:16 2.txt
-rw-r--r-- 1 root root 0 Jun 06 21:16 1.txt
[[email protected] data]# cd /tmp/data1;rm -rf *
-bash: cd: /tmp/data1: No such file or directory
[[email protected] data]# ll
total 0
[[email protected] data]#

在此,在上面的示例中,由于系统目录/ tmp / data1不存在,因此并行执行命令“ cd / tmp / data1; rm -rf *”会导致灾难,因此,与其删除/ tmp / data1中的文件/将删除/ tmp / data中当前工作目录中的所有文件。 为了避免这种情况,请在逻辑运算符“cd / tmp / data1 && rm -rf *”。

[[email protected] data]# pwd
/tmp/data
[[email protected] data]# ls -ltr
total 0
-rw-r--r-- 1 root root 0 Jun 06 21:11 3.txt
-rw-r--r-- 1 root root 0 Jun 06 21:11 2.txt
-rw-r--r-- 1 root root 0 Jun 06 21:11 1.txt
[[email protected] data]# cd /tmp/data1 && rm -rf *
-bash: cd: /tmp/data1: No such file or directory
[[email protected] data]# ls -ltr
total 0
-rw-r--r-- 1 root root 0 Jun 06 21:11 3.txt
-rw-r--r-- 1 root root 0 Jun 06 21:11 2.txt
-rw-r--r-- 1 root root 0 Jun 06 21:11 1.txt
[[email protected] data]#

在这里,第二队失败了,因为第一队也失败了。

使用逻辑或运算符“ ||”

在其他情况下,仅当第一个命令失败时,才必须执行第二个命令。 为了解决这个问题,我们使用逻辑或运算符。

逻辑OR运算符的基本语法:

Command1 || Command2 || .... || CommandN

逻辑或运算符的示例。

[ -d /tmp/data1 ] || mkdir /tmp/data1

在这里,我们仅在第二个命令中创建目录“ / tmp / data1”,只要该目录不存在(在第一个命令“[-d /tmp/ data1]”。

组合多个语句以在Linux中执行多个命令

我们还可以组合多个语句以在Linux中运行多个命令。

cat /etc/shadow > /dev/null && echo "File opened successfully" || echo "Failed to open File"

我们在上面的命令中使用了多个运算符。 如果文件存在,我们将收到类似“成功打开文件”的消息,否则我们将收到错误“无法打开文件”。 这样,我们可以一次组合多个语句以在Linux中运行多个命令。

Sidebar