в этой лекции я буду говорить о каналах, которые являются одной из самых полезных функций командной строки
в Linux. конвейеры используются бесчисленным количеством способов и практически везде. Философия проектирования unix и linux
заключается в том, чтобы иметь много небольших утилит, которые работают очень хорошо, просто одна специальная функция
без ненужных функций в Linux вы пишете программы, чтобы делать одно и делать это хорошо, а
затем вы заставляете их работать вместе, давайте посмотрим на это изображение, каждая команда
или программа, которую мы запускаем, имеют три потока данных, подключенных к ней stdn или стандарт input, который представляет данные,
подаваемые в программу, или данные, с которыми программа работает со стандартным выводом, или стандартный вывод, который представляет собой
данные, печатаемые программой по умолчанию на терминал, и std e double r или стандартную ошибку для
сообщений об ошибках, а также по умолчанию на терминал используя символ вертикальной черты, который представляет собой вертикальную черту,
мы можем соединять два или более комментария одновременно, это поддерживает первоначальную философию unix объединения
программ вместе для выполнения сложных задач таким образом, канал позволяет нам отправлять вывод одной команды в качестве
ввода в другой канал, и перенаправление - это средство, с помощью которого мы можем соединить эти потоки
ввода-вывода и ошибок между программами и файлами для направления данных интересными и полезными способами,
давайте взглянем на этот механизм я запускаю ls minus l capital sh slash ctc
команда перечислила все файлы в каталоге etc, отсортированные по размеру в удобочитаемом,
есть файлы laxa, и я закончил видеть только последние, самые
маленькие файлы, самые большие из них начало, и мне нужно прокрутить, чтобы увидеть их,
что я мог бы сделать, это подключить команду ls к команде head с помощью канала, я отправлю вывод
первой команды, которая является ls, в качестве ввода для второй команды, которая выглядит следующим образом pipe
head, и мы видим только заголовок или первые 10 файлов вывода, и это самые большие
из них, которые распространены, и рекомендуется добавить пробел до и после символа трубы,
но это не обязательно, но это не ошибка,
мы мы можем объединить столько комментариев, сколько захотим, в следующем примере я буду фильтровать и отображать только
20-й файл вывода, это просто пример, чтобы увидеть, как это работает, так что голова минус n20
хвост трубы минус n1 это 20-я строка output давайте более подробно рассмотрим
вывод команды ls становится входом для head, который будет отображать первые 20 строк, эти
первые 20 строк, которые являются выходом, подаются в качестве входных данных в следующую команду, которая является хвостом,
и команда tail будет отображать только последняя, ​​которая на самом деле является 20-й строкой
вывода, поэтому канал принимает вывод одной команды и использует его в качестве ввода для другой,
и в последнем примере я хочу узнать, сколько ошибок аутентификации произошло,
таких нет команда в linux, поэтому мне нужно сначала создать свой собственный, используя трубы, используя cat, я
показываю весь файл cat var log auth.log это файл, в котором сохраняются аутентификации,
это файл, который я также могу добавить минус n, чтобы увидеть номера строк,
затем вывод cat c Параметр будет передан в качестве входных данных для другой команды под названием grep grep -
это утилита командной строки, которая ищет строку внутри файла или текста и отображает строки,
содержащие строку, так что конвейер grep минус a и строка, которую я ищу для ошибки аутентификации
и есть некоторые оси, есть больше строк, которые содержат строку, это все сбои
аутентификации, и, наконец, я хочу увидеть, сколько строк было найдено, вывод команды grep будет
передан другой команде с именем wc, которая подсчитывает, сколько строк было дано поэтому pipe wc
минус l, и он вернул шесть, поэтому в файле журнала было сохранено шесть сбоев аутентификации,
позвольте мне сказать вам несколько слов о wc, что является сокращением от количества слов, оно приносит новое строковое
слово и счетчики байтов для каждого файла wc и т.д. 48 строк,
83 работы и 2 825 символов в этом файле, эта команда используется для получения различной статистики.
Я только что обнаружил, что в системе 48 учетных записей, если вы хотите видеть только количество строк,
затем используйте option minus l wc minus l etc group В
системе 76 групп
wc minus w будет отображать только количество слов, а minus c - только количество символов, поэтому wc minus w
usr share dict американский английский это стандартный словарь, который вы найдете на ubuntu,
и в этом файле словаря американского английского есть такое количество работ,
давайте посмотрим, сколько символов в файле, и в файле почти 1 миллион символов,
вы также можете использовать его с конвейером, давайте посмотрим, сколько пользователей вошли в систему,
кто отображает пользователей, вошедших в систему, поэтому, кто передает wc минус self
, только один пользователь вошел в систему.Одна из основных целей конвейера - фильтрация, вы используете конвейер
для фильтрации содержимого большого файла, чтобы найти конкретную строку или слово, например, обратите внимание,
что когда вы используете канал, вы не запускаете одну команду, но каждая команда в канале запускается,
поэтому в этом примере в этом я запустил три процесса, каждая команда запускает процесс cat grep
и wc не торопитесь, чтобы потренироваться и глубоко un понять, как работают трубы, потому что это ключевая
концепция в Linux, и вы найдете ее везде, где труба является одной из наиболее часто используемых функций оболочки