Операторы цепочки команд — это специальные символы, используемые для написания миниатюрных сценариев оболочки в командной строке. Обычно они используются для выполнения команд в определенной последовательности, определяемой размещением операторов между командами. Это невероятно полезно при автоматизации задач.
Давайте узнаем о нескольких общих операторах цепочки в Linux, которые могут помочь вам выполнять задачи быстрее и с меньшими интервалами между пользователями.
1. Оператор амперсанда (&)
Часто, когда вы открываете программу или выполняете команду из оболочки, вам приходится либо ждать завершения команды, либо вручную выходить из программы, прежде чем вы сможете продолжить работу с оболочкой. Здесь в игру вступает оператор амперсанда (&).
Добавляя оператор амперсанда к любой команде, вы указываете оболочке, что выполнить эту команду Linux в фоновом режиме так что вы можете продолжать использовать оболочку без привязки.
гэдит &
Обычно, если вы запускаете gedit из терминала, вы не сможете использовать терминал, пока не закроете текстовый редактор. Но, добавив оператор амперсанда, вы можете заставить его работать в фоновом режиме и сразу же продолжать использовать оболочку.
2. Оператор точки с запятой (;)
Оператор точки с запятой — невероятно полезный оператор цепочки Linux, который вы можете использовать для выполнения команд в определенном последовательном порядке. Упорядочите свои команды и разделите их точкой с запятой.
pwd; мкдир тест; CDтест; сенсорный файл
Приведенный выше синтаксис заставляет оболочку выполнять каждую команду одну за другой. Обратите внимание, что оболочка не проверяет успешное завершение каждой команды. Как только оболочка получает код возврата, она переходит к выполнению следующей команды.
3. Оператор ИЛИ (||)
Оператор ИЛИ выполнит следующую команду только в том случае, если предыдущая команда завершится ошибкой, т. е. вернет код выхода 0. Он работает как логический вентиль ИЛИ, который возвращает значение 1, когда на входе 0.
плохая_команда || лс
В этом примере синтаксиса плохая_команда является ложной командой, которая не может быть выполнена, и, поскольку она не выполняется, команда, следующая за оператором ИЛИ, т.е. команда лс, будет успешно выполнено.
4. Оператор трубы (|)
Оператор конвейера направляет вывод предыдущей команды в качестве ввода последующей команды. Чаще всего он используется для фильтрации данных с помощью команды grep.
кошачий тест | грэп -я "использовать"
Эта команда отправляет вывод кошачья команда в качестве входных данных для команды grep, которая затем фильтрует выходные данные по указанной строке.
5. Оператор И (&&)
Этот оператор действует аналогично оператору точки с запятой, за исключением того, что в отличие от оператора точки с запятой оператор И будет выполнять команды только в том случае, если предыдущая команда была успешно выполнена.
pwd && мкдир тест && компакт-диск тест && плохая_команда && лс
В синтаксисе этого примера оболочка успешно выполнит все команды до тех пор, пока плохая_команда. Однако, поскольку bad_command не запускается, оболочка вернет ошибку и пропустит команду ls.
6. Оператор НЕ (!)
Оператор NOT работает аналогично оператору exclude в программировании. Например, если вы хотите выполнить операцию с большим количеством файлов в каталоге, но хотите исключить немного на основе некоторого параметра, тогда вы можете использовать оператор НЕ, передав параметр после символа НЕ (!).
г.м.-р !(*.текст)
Этот пример команды рекурсивно удалит все файлы в каталоге, за исключением файлов, которые имеют ".текст" расширение.
7. Оператор приоритета ((..))
Команды, следующие за операторами AND и OR, зависят от кода выхода предыдущей команды. Эти операторы являются бинарными и оценивают только две команды, которые идут до и после них.
Поэтому при работе с несколькими операторами важно установить группы и приоритет, чтобы последовательность выполнения соответствовала вашим ожиданиям.
(л.с. *.txt > txt-файлы.list && сп *.tx ~) && (ls *.deb > deb-packages.list && cp *.deb ~) || эхо "Предварительный тест!"
В этом образце синтаксиса обе группы команд должны возвращать код выхода 0, чтобы гарантировать успешное выполнение последней команды. В этом примере требуется, чтобы обе команды в первом наборе () завершались с 0 для запуска второго набора ().
8. Оператор комбинации ({..})
Как следует из названия, оператор комбинации используется для группировки команд. Какие бы команды вы ни хотели сгруппировать, вы можете поместить их в фигурные скобки, и они будут выполняться в зависимости от кода выхода первой команды.
тест -f /etc/passwd && {пароль; дата} && эхо $0; эхо "Привет"
Образец синтаксиса проверит, если файл /etc/passwd присутствует, распечатайте текущий рабочий каталог, дату, имя оболочки и эхо "Hello".
9. Конкатенация или оператор Escape (\)
Оператор конкатенации или экранирования имеет две функции. Вы можете использовать его либо для объединения двух команд, либо в качестве escape-символа при работе со строками в оболочке.
mkdir test0 test1 \ test2
эхо "Здравствуйте! от в
Другая сторона"
Первая команда создаст четыре каталога с именами от test0 до test2, а вторая команда напечатает строку, разделенную новой строкой.
10. Операторы перенаправления (>, >>,
Операторы перенаправления перенаправляют вывод или ввод в файл либо путем перезаписи файла, либо путем добавления к нему. Если вы хотите перезаписать файл, вам нужно использовать синтаксис одинарной угловой скобки (>). Если вы хотите добавить в файл, вам придется использовать синтаксис двойной угловой скобки (>>).
эхо "дсд"> тест; эхо "бсссс">> тест
В образце синтаксиса первая команда перезапишет «тестовый» файл предоставленной строкой, но во второй команде предоставленная строка будет добавлена к тестовому файлу.
Ускорьте рабочий процесс терминала Linux
Хотя использование специальных операторов значительно упростит выполнение задач, существует множество других способов ускорить рабочий процесс.
Один простой и полезный способ сделать больше за меньшее время — ознакомиться с несколькими удобными сочетаниями клавиш оболочки. Привыкание к этим ярлыкам пройдет долгий путь, и вы обнаружите, что полагаетесь на них до тех пор, пока используете Linux.