Операторы команд позволяют пользователю выполнять несколько команд в одной строке, результат выполнения зависит комбинирования операторов команд.
Оператор && будет выполнять вторую команду только в том случае, если при выполнении первой команды не возникло ошибки. Эта команда очень полезна при проверке состояния выполнения последней команды.
┌──(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