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