Оператор, используемый между несколькими командами, позволяет связать их в цепочку, которая выполняет их на основе поведения оператора, используемого между ними. Цепочка команд Linux похожа на написание сценариев оболочки непосредственно из командной строки. Поэтому возможна их автоматизация. Операторы объединения в цепочку также могут помочь автоматической машине функционировать более эффективно.
Эта статья прольет свет на часто используемую цепочку команд в linux с краткими описаниями и примерами, что, несомненно, повысит вашу производительность и позволит вам писать более короткие и осмысленные коды при некотором снижении нагрузки на систему.
В Linux мы можем связывать команды для выполнения нескольких команд одновременно и непосредственно из терминала. Это похоже на короткие сценарии оболочки, которые вы можете выполнять непосредственно через терминал. Технология цепочки команд Linux состоит в объединении нескольких команд в одну, которая будет выполняться последовательно в зависимости от разделяющих их операторов, и эти операторы определяют, как команды будут выполняться логическими операторами в сценарии оболочки. Этот метод может выполнять несколько команд одновременно.
Используется для выполнения команды в фоновом режиме, не прерывая другие команды. Процессы / скрипты / команды отправляются в фоновом режиме для выполнения других команд на переднем плане. Выполнение скрипта ускоряется, и оператор лучше использует системные ресурсы в сценарии оболочки. В других языках программирования это называется созданием дочернего процесса или разветвлением. Амперсанды могут использоваться следующими способами:
ping -cl google.com & #измените команду до &
ping -c1 google.com & ping -c1 geeksforgeeks.org &
Команда, следующая за этим оператором, будет выполнена только в том случае, если предыдущая команда выполнена успешно. Если первая команда выполнена успешно, полезно выполнить другую команду после ее успешного выполнения.
echo "hello there" && echo "this is gfg"
apt update && echo "hello"
AND chaining operator
Таким образом, несколько команд могут выполняться последовательно за один раз. Тем не менее, важно отметить, что команды, связанные оператором (;), всегда выполняются последовательно. Разделение двух команд оператором всегда приводит к тому, что вторая команда выполняется независимо от первой. Вторая команда выполняется независимо от состояния завершения первой команды, в отличие от оператора амперсанда. Вторая команда всегда будет выполняться, даже если первая команда завершается неудачно, т. Е. Состояние выхода не равно нулю.
who;pwd;ls
Каждая команда будет выполняться последовательно. Независимо от того, успешно ли выполнена первая команда, команда, следующая за оператором ( ; ), все равно будет выполняться.
Команда, следующая за этим оператором, будет выполнена только в том случае, если команда, предшествующая ей, завершилась неудачно. То есть это то же самое, что и оператор else . Вторая команда будет выполнена, если состояние выполнения первой команды не равно нулю.
echo "hello there" || echo "This is gfg"
apt update || echo "hello"
or chaining operator
Вывод первой команды отправляется на вход второй команды с этим оператором.
ls -l | wc -l
Команда wc -l в приведенной выше команде отображает количество строк. ls -l отображает список файлов в системе. Эта команда показывает, сколько файлов находится в каталоге. Выходные данные ls – l передаются следующей команде, которая подсчитывает строки. В результате мы можем узнать количество файлов в каталоге с помощью канала.
При использовании в command/ это отрицает выражение. Используя это, удаляются все файлы в каталоге, кроме одного.
touch a.txt b.txt c.txt d.txt e.txt
rm -r !(a.txt)
A.txt это единственный файл, который будет удален из каталога с помощью этой команды. На рисунке ниже показано, как мы создали некоторые файлы внутри каталога с помощью команды touch. Список каталогов показывает, какие файлы присутствуют. Использование! команда удаляет все файлы, кроме a.txt. Оператор. A.txt — единственный файл, который был удален, в чем мы можем убедиться, если перечислим файлы еще раз.
Группа команд может быть перенаправлена в поток или файл с помощью этого оператора. Стандартный ввод и вывод могут быть перенаправлены с помощью этого оператора. Операторы перенаправления поддерживаются почти всеми командами.
cat >>file_name
sort <file_name
С помощью первой команды мы создаем файл с именем “имя_файла” (с помощью оператора перенаправления >> мы можем вводить информацию в файл), а затем со второй командой мы сортируем содержимое этого файла. Как вы можете видеть на изображении ниже, мы должны сначала создать файл с числами, прежде чем использовать эту команду. Затем содержимое сортируется.
С помощью этой команды можно использовать операторы If-else. Это логические AND и OR.
[ ! -d ABC ] && mkdir ABC || cd ABC
Во-первых, эта команда определит, существует ли каталог ‘ABC’ или нет. В противном случае будет создан новый каталог, если он еще не существует, в противном случае ‘ABC’ станет текущим каталогом. Если вы посмотрите на изображение ниже, мы создадим каталог ‘ABC’, поскольку он не существует. Каталог уже существует при втором запуске команды, поэтому ‘ABC’ становится текущим каталогом.
Команда оболочки, которая объединяет несколько команд в одну. Результат легче читать. Он используется для выполнения больших команд, потому что большая команда разбивается на несколько строк.
Для выполнения нескольких команд в указанном порядке эта команда устанавливает значение precedent.
Первая команда будет выполнена, если она пройдет успешно, но вторая команда выполняться не будет. Однако во втором случае будет выполнена третья команда, поскольку оператор () используется для установки приоритета. Обратитесь к следующему изображению: если каталог уже существует (первая команда), то текущий каталог становится PQR (вторая команда), но в первом случае третья команда не выполняется, но во втором случае выполняется третья команда.
На протяжении всего этого руководства мы рассматривали два распространенных способа связывания команд с помощью операторов сценариев оболочки bash: встроенный и ожидающий завершения других процессов. Вы также можете связывать команды с помощью переменных. Возможности операторов сценариев оболочки безграничны. Мы можем даже использовать пользовательские функции, файлы сценариев, условные выражения или циклы для реализации этих методов.