В Linux для выполнения любой задачи, нам необходимо выполнить соответствующие команды на терминале. В случае, если вам нужно больше эффективности, вы можете запускать одновременно несколько команд в Linux. Этот пост быстро научит вас, как мы можем запустить несколько команд в Linux в зависимости от различных ситуаций или условий.

Как запустить несколько команд в Linux в одно и тоже время?

Есть несколько операторов, доступных для запуска несколько команд в Linux в одно и тоже время, такие как «точка с запятой или ;», оператор «логический AND» и оператор «логический OR».

  • Используйте оператор точку с запятой «;»

Оператор точка с запятой или «;» позволяет запускать несколько команд одновременно в Linux, когда команда отделяются символом «;».

Базовый синтаксис для оператора с запятой:

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

 

[root@destroyer ~]# 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
[root@destroyer ~]#

 

Не имеет значения, если предыдущая команда успешно или нет. Даже в случае выхода из строя одной команды, следующая команда будет выполнена. Это очень удобно в сценариях оболочки.

Использование логического оператора «&&»

Иногда нам нужно выполнить вторую команду, только если первая команда успешно завершена в отличие от оператора точка с запятой.

Базовый синтаксис логического оператора:

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

 

Пример логического оператора.

[root@destroyer tmp]# mkdir /tmp/data && cd /tmp/data

 

В приведенном выше примере мы создали папку или каталог с именем «data» в разделе каталога «/tmp». Так как мы успешно создали каталог /tmp/data, мы можем в состоянии перейдите в каталог «/tmp/data».

Для того, чтобы перепроверить это условие, выполните одну и ту же команду еще раз, как показано ниже:

[root@destroyer ~]# mkdir /tmp/data && cd /tmp/data
mkdir: cannot create directory `/tmp/data': File exists
[root@destroyer ~]#

 

В приведенном выше вывода команды «mkdir /tmp/data» не удалась, так как уже существует. Система не позволяет запускать вторую команду.

Оператор логический AND рекомендуется над оператором точкой с запятой, так как это проверит состояние успеха или неудач предыдущей команды. Чтобы объяснить это, давайте рассмотрим пример.

Требование:

  1. Перейдите в директорию /tmp/data1
  2. Удалите все файлы в нем.
[root@destroyer data]# pwd
/tmp/data
[root@destroyer 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
[root@destroyer data]# cd /tmp/data1;rm -rf *
-bash: cd: /tmp/data1: No such file or directory
[root@destroyer data]# ll
total 0
[root@destroyer data]#

 

Здесь, в приведенных выше примере выполнение команды “cd /tmp/data1;rm -rf *” параллельно привело к катастрофе, так как на системном каталоге /tmp/ data1 не существует, и поэтому вместо того, чтобы удалять файлы в /tmp/ data1/, будут удалены все наши файлы в текущем рабочем каталоге, которые находятся в /tmp/data. Чтобы избежать такой ситуации используйте ниже команды с логическим оператором “cd /tmp/data1 && rm -rf *”.

[root@destroyer data]# pwd
/tmp/data
[root@destroyer 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
[root@destroyer data]# cd /tmp/data1 && rm -rf *
-bash: cd: /tmp/data1: No such file or directory
[root@destroyer 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
[root@destroyer data]#

 

Здесь вторая команда не удалось, так как первая команда тоже не удалось.

Использование логического оператора OR «||»

В некоторых других случаях мы должны выполнить вторую команду, только если первая команда вышла неудачной. Чтобы справиться с этим делом мы используем логический оператор OR.

Основной синтаксис для логического оператора OR:

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

 

Пример логического оператора OR.

[ -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.

Источник: AndreyEx.ru