Поиск по сайту:

Учебное пособие по Bash Pipe


Обычно мы получаем вывод любой команды в терминал. Иногда нам нужно отправить вывод команды как ввод другой команды. Эту задачу можно выполнить, выполнив команды несколько раз. Но эту задачу можно легко выполнить с помощью команды канала, которая выполняет две или более команд одновременно в Linux, где вывод одной команды является вводом следующей команды. Оператор «|» используется для конвейера. Использование команды pipe описано в этом руководстве.

Примеры команд канала

Различные варианты использования команды pipe(|) показаны в этой части руководства.

Пример 1. Запись в файл

Конкретное строковое значение может быть записано в новый файл с помощью команд «echo» и «cat».

Выполните следующую команду, чтобы записать строковое значение в файл test.txt. Здесь вывод команды «echo» передается как ввод команды «cat»:

$ echo "Learn bash programming" | cat > test.txt

Выполните следующую команду, чтобы проверить содержимое файла test.txt:

$ cat test.txt

Следующий вывод показывает, что файл успешно создан с выводом команды «echo»:

Пример 2. Подсчитайте общее количество отдельных файлов

В этом примере показан метод подсчета общего количества текстовых файлов, начинающихся со слова «тест». Эту задачу можно выполнить с помощью нескольких команд или одной команды с вертикальной чертой (|).

Выполните следующую команду, чтобы распечатать список текстовых файлов текущего местоположения:

$ ls *.txt

Следующий вывод показывает, что есть два текстовых файла, которые начинаются со слова «test». Это test.txt и testfile.txt:

Выполните следующую команду, чтобы сохранить список текстовых файлов в переменной $list:

$ list=`ls *.txt`

Выполните следующую команду, чтобы узнать список текстовых файлов, начинающихся со слова «тест», и сохраните их в файле filter.txt:

$ grep test*.txt $list > filter.txt

Выполните следующую команду, чтобы подсчитать общее количество строк в файле filter.txt:

$ wc -l filter.txt

После выполнения предыдущих команд появляется следующий вывод:

Задачу предыдущих команд можно легко выполнить с помощью следующей одиночной команды, в которой вывод команды «ls» отправляется в качестве ввода команды «grep». Вывод команды «grep» аналогичен вводу команды «wc» с использованием вертикальной черты (|).

$ ls *.txt | grep test | wc -l

После выполнения предыдущей команды появляется следующий вывод:

Пример 3. Сортировка содержимого файла

Команду sort можно использовать для сортировки содержимого файла различными способами. В этой части туториала показан метод сортировки содержимого текстового файла с помощью команд «cat» и «sort».

Создайте текстовый файл с именем products.txt со следующим содержимым:

Выполните следующую команду, чтобы проверить содержимое файла products.txt:

$ cat products.txt

После выполнения предыдущей команды появляется следующий вывод:

Выполните следующую команду, чтобы отсортировать содержимое файла в порядке возрастания на основе первого столбца файла:

$ cat products.txt | sort

После выполнения предыдущей команды появляется следующий вывод:

Выполните следующую команду, чтобы отсортировать содержимое файла в порядке убывания на основе первого столбца файла:

$ cat products.txt | sort -r

После выполнения предыдущей команды появляется следующий вывод:

Выполните следующую команду, чтобы отсортировать содержимое файла в порядке возрастания на основе третьего столбца файла:

$ cat products.txt | sort -k3

После выполнения предыдущей команды появляется следующий вывод:

Выполните следующую команду, чтобы отсортировать содержимое файла в порядке возрастания на основе первого столбца файла и сохранить отсортированные выходные данные в файле sortedProduct.txt:

$ cat products.txt | sort | cat > sortedProduct.txt

Выполните следующую команду, чтобы проверить содержимое файла sortedProduct.txt:

$ cat sortedProduct.txt

После выполнения предыдущих команд появляется следующий вывод:

Пример 4. Чтение определенного содержимого файла

Команда «head» используется для чтения определенного количества строк с начала файла. Команда «tail» используется для чтения определенного количества строк с конца файла. В этом примере показаны методы использования команд «cat» и «head», «cat» и «tail», а также команд «cat», «head» и «tail» с оператором вертикальной черты (|).

Выполните следующие команды, чтобы проверить содержимое файла products.txt и распечатать первые две строки файла products.txt:

$ cat products.txt
$ cat products.txt | head -2

После выполнения предыдущих команд появляется следующий вывод:

Выполните следующие команды, чтобы проверить содержимое файла products.txt и распечатать последние три строки файла products.txt:

$ cat products.txt
$ cat products.txt | tail -3

После выполнения предыдущих команд появляется следующий вывод:

Выполните следующие команды, чтобы проверить содержимое файла products.txt и распечатать последнюю строку из первых трех строк файла products.txt:

$ cat products.txt
$ cat products.txt | head -3 | tail -1

После выполнения предыдущих команд появляется следующий вывод:

Заключение

Оператор канала (|) — очень полезный оператор Bash, который используется для разных целей. Некоторые распространенные варианты использования этого оператора показаны в этом руководстве на различных примерах. Мы надеемся, что после прочтения этого руководства пользователям Bash станет понятно использование оператора канала (|).

Статьи по данной тематике: