Операторы команд позволяют пользователю выполнять несколько команд в одной строке, результат выполнения зависит комбинирования операторов команд.

Оператор И &&

Оператор && будет выполнять вторую команду только в том случае, если при выполнении первой команды не возникло ошибки. Эта команда очень полезна при проверке состояния выполнения последней команды.

┌──(k1ber㉿kali)-[~]
└─$ cat test.txt && echo "Da"
Rabotaem
Da

┌──(k1ber㉿kali)-[~]
└─$ cat NotFound.txt && echo "Da"
cat: NotFound.txt: No such file or directory

Оператор ИЛИ ||

Оператор || очень похож на оператор “else” в программировании. Вторая команда выполнится только в случае ошибки первой команды.

┌──(k1ber㉿kali)-[~]
└─$ cat test.txt || echo "Net"
Rabotaem

┌──(k1ber㉿kali)-[~]
└─$ cat NotFound.txt || echo "Net"
cat: NotFound.txt: No such file or directory
Net

Оператор амперсанда &

Оператор & заставит команду работать в фоновом режиме. Просто введите команду с пробелом и &. Можно выполнять несколько команд в фоновом режиме за один раз.

┌──(k1ber㉿kali)-[~]
└─$ sleep 5 && echo "5 seconds later..." &
[1] 3499

┌──(k1ber㉿kali)-[~]
└─$ ls
BlockedDir  Desktop  Documents  Downloads  test.txt

┌──(k1ber㉿kali)-[~]
└─$ 5 seconds later...

[1]+  Done                    sleep 5 && echo "5 seconds later..."

Оператор потока |

Оператор | очень полезен, когда выходные данные первой команды действуют как входные данные для второй команды. Например, если вывод команды очень длинный, мы можем перенаправить его в команду less для удобного просмотра:

┌──(k1ber㉿kali)-[~]
└─$ find / *.conf 2>/dev/null | less

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

┌──(k1ber㉿kali)-[~]
└─$ (cat test.txt || echo "Ne vivedu test.txt") && (cat NotFound.txt || echo "Etot to4no ne vivedu")
Rabotaem
cat: NotFound.txt: No such file or directory
Etot to4no ne vivedu

Перенаправление в файл

Обычно мы выводим информацию в консоль, что довольно удобно. Но иногда её нужно записать в файл, отправить на другой компьютер или другому человеку. Оператор > (больше) указывает командной строке на то, что мы хотим записать информацию в файл, а не выводить в консоль.

┌──(k1ber㉿kali)-[~]
└─$ ls -l > list_folder.txt

┌──(k1ber㉿kali)-[~]
└─$ cat list_folder.txt 
total 20
drwxr-xr-x 2 k1ber k1ber 4096 Apr  3 11:20 BlockedDir
drwxr-xr-x 2 k1ber k1ber 4096 Apr  3 11:19 Desktop
drwxr-xr-t 2 k1ber k1ber 4096 Apr  3 11:19 Documents
drwx-----T 2 k1ber k1ber 4096 Apr  3 11:19 Downloads
-rw-r--r-- 1 k1ber k1ber    0 Apr  3 12:30 list_folder.txt
-rw-r--r-- 1 k1ber k1ber    9 Apr  3 12:13 test.txt