Как передать вывод команды в файл в Linux
Конвейер — это команда, которая используется большинством пользователей Linux для перенаправления вывода команды в любой файл. Операционные системы Unix и Linux используют эту команду для отправки вывода любого процесса, вывода или программы в качестве ввода другому процессу. Эти операционные системы разрешают соединение между командами stdout и stdin. Для выполнения этой функции можно использовать символ вертикальной черты «|».
Также можно думать об этом как о временной, но прямой связи между двумя или более процессами, командами или программами. Фильтры — это те программы командной строки, которые выполняют дополнительную обработку.
Эта прямая связь между процессами или командами позволяет им выполнять и передавать данные между собой одновременно, не сталкиваясь с проблемой проверки экрана дисплея или временных текстовых файлов. В конвейере поток данных идет слева направо, что означает, что каналы являются однонаправленными. Теперь давайте рассмотрим несколько практических примеров использования каналов в Linux.
Передача списка файлов и каталогов:
В первом примере мы показали, как вы можете использовать команду pipe для передачи списка каталогов и файла в качестве «входных данных» для команд more.
Здесь вывод «ls» рассматривается как ввод команды «more». В результате выполнения этой инструкции на экране одновременно отображается вывод команды ls. Канал предоставляет возможность контейнера для получения выходных данных команды ls и передачи их другим командам в качестве входных данных.
Поскольку основная память выполняет реализацию конвейера, эта команда не использует диск для создания связи между стандартным выводом ls -l и стандартным вводом команды more. Приведенная выше команда аналогична следующей серии команд с точки зрения операторов перенаправления ввода/вывода.
$ more < temp
Проверьте содержимое файла «temp» вручную.
Сортировка и печать уникальных значений с использованием каналов:
Теперь мы увидим пример использования канала для сортировки содержимого файла и вывода его уникальных значений. Для этого мы объединим команды «sort» и «uniq» с помощью вертикальной черты. Но сначала выберите любой файл, содержащий числовые данные, в нашем случае это файл «record.txt».
Запишите приведенную ниже команду, чтобы перед обработкой конвейера вы имели четкое представление о данных файла.
Теперь выполнение приведенной ниже команды отсортирует данные файла, отображая уникальные значения в терминале.
Использование Pipe с командами Head и Tail
Вы также можете использовать команды «head» и «tail» для вывода строк из файла в определенном диапазоне.
Процесс выполнения этой команды выберет первые семь строк «samplefile» в качестве входных данных и передаст их хвостовой команде. Команда tail извлечет последние 5 строк из «samplefile» и распечатает их в терминале. Поток между выполнением команд происходит из-за каналов.
Сопоставление определенного шаблона при сопоставлении файлов с использованием конвейеров
Каналы можно использовать для поиска файлов с определенным расширением в извлеченном списке команды ls.
Команда Pipe в сочетании с «grep», «tee» и «wc».
Эта команда выберет «Алекс» из файла «record.txt» и в терминале распечатает общее количество вхождений шаблона «Алекс». Здесь pipe объединяет команды «cat», «grep», «tee» и «wc».
$ cat file1.txt
Заключение:
Канал — это команда, которая используется большинством пользователей Linux для перенаправления вывода команды в любой файл. Символ вертикальной черты «|» может использоваться для прямой связи между выводом одной команды и вводом другой. В этом посте мы рассмотрели различные методы передачи вывода команды на терминал и в файлы.