Канал — це форма переспрямування (передача стандартного виводу до іншого пункту призначення), яка використовується в Linux та інших Unix-подібних операційних системах для надсилання виводу однієї команди/програми/процесу іншій команді/програмі/процесу для подальшої обробки . Системи Unix/Linux дозволяють з’єднувати stdout команди зі stdin іншої команди. Ви можете зробити це, використовуючи символ труби '|' .
Конвеєр використовується для об’єднання двох або більше команд, і в цьому випадку вихідні дані однієї команди діють як вхідні дані для іншої команди, а вихідні дані цієї команди можуть діяти як вхідні дані для наступної команди і так далі. Його також можна візуалізувати як тимчасовий зв’язок між двома чи більше командами/програмами/процесами. Програми командного рядка, які виконують подальшу обробку, називаються фільтрами.
Цей прямий зв’язок між командами/програмами/процесами дозволяє їм працювати одночасно та дозволяє безперервно передавати дані між ними замість того, щоб передавати їх через тимчасові текстові файли або через екран дисплея.
Труби односпрямовані, тобто дані протікають зліва направо через конвеєр.
Синтаксис:
command_1 | command_2 | command_3 | .... | command_N>
Приклад конвеєра в Unix або Linux
1. Перерахуйте всі файли та каталоги та введіть їх як вхідні дані для команди `grep` за допомогою конвеєра в Linux
ls | grep file.txt>
ls | файл grep.txt
Спочатку ми використовуємо `ls`, щоб перерахувати всі файли та каталоги в поточному каталозі, потім передаємо його результат команді `grep` і шукаємо назву файлу `file.txt`. Вихідні дані команди ls надсилаються на вхід команди grep, а результатом є список файлів, які відповідають пошуковому терміну.
2. Перелічіть усі файли та каталоги та надайте їх як вхідні дані для команд `more` за допомогою конвеєрів у Linux.
$ ls -l | more>
$ ls -l | більше
Команда more приймає вихідні дані $ ls -l як вхідні дані. Чистий ефект цієї команди полягає в тому, що вивід ls -l відображається по одному екрану. Канал діє як контейнер, який приймає вихідні дані ls -l і передає їх більше як вхідні дані. Ця команда не використовує диск для підключення стандартного виводу ls -l до стандартного введення more, оскільки канал реалізовано в основній пам’яті.
З точки зору операторів перенаправлення вводу/виводу наведена вище команда еквівалентна наступній послідовності команд.
$ ls -l ->temp більше -> temp (або більше temp) [вміст temp] rm temp>темп
ls -l -> темп
Вихід двох наведених вище команд однаковий.
3. Сортуйте список файлів за розміром за допомогою конвеєрів у Linux
ls -l sort -k 5>ls -l sort -k 5
Ця команда містить список усіх файлів у поточному каталозі, а потім використовує команду `sort` для сортування списку за п’ятим стовпцем, який представляє розмір файлу.
4. Використовуйте команду sort і uniq, щоб відсортувати файл і надрукувати унікальні значення за допомогою конвеєра в Linux
$ sort record.txt | uniq>
Це відсортує заданий файл і надрукує лише унікальні значення.
сортувати запис.txt | унікальний
5. Використовуйте голову та хвіст, щоб надрукувати рядки в певному діапазоні у файлі.
$ cat sample2.txt | head -7 | tail -5>
Ця команда вибирає перші 7 рядків до команди (head -7), і це буде введено в команду (tail -5), яка нарешті надрукує останні 5 рядків із цих 7 рядків.
кіт sample2.txt | голова -7 | хвіст -5
картинки з icloud на android
6. Використовуйте ls і find, щоб перерахувати та надрукувати всі рядки, які відповідають певному шаблону у відповідних файлах.
$ ls -l | find ./ -type f -name '*.txt' -exec grep 'program' {} ;> Ця команда вибирає файли з .txt розширення у вказаному каталозі та шукає шаблони, такі як program у наведеному вище прикладі, і друкує ті, у яких є program.
ls -l | find ./ -type f -name *.txt -exec grep program {} ;
7. Використовуйте команди cat, grep, tee і wc, щоб прочитати певний запис від користувача та зберегти у файлі та надрукувати кількість рядків.
$ cat result.txt | grep 'Rajat Dua' | tee file2.txt | wc -l>
Ця команда вибирає Раджат Дуа і збережіть їх у file2.txt і надрукуйте загальну кількість відповідних рядків Раджат Дуа
cat result.txt | grep Раджат Дуа | tee file2.txt | wc -l
8. Як я можу перенаправити вихід переданої команди у файл у Unix або Linux?
Ми можемо використовувати оператор перенаправлення `>`, щоб перенаправити вивід команди, що передається.
Наприклад:
Якщо я маю ім’я файлу `file.txt` і хочу перенаправити його на ім’я файлу `geeks.txt`.
ls | grep 'file'>geeks.txt>geeks.txt
ls | grep ‘файл’> geeks.txt
Висновок
Конвеєр — це потужна функція в операційних системах Unix і Linux, яка допомагає нам зв’язувати різні команди, щоб швидко й ефективно виконувати складні завдання. У цій статті ми дізналися, як можна перенаправити вихідні дані однієї команди на вхідні дані іншої команди. Загалом можна сказати, що за допомогою конвеєрів ми можемо заощадити час, підвищити продуктивність і зменшити використання дискового простору.