Перенаправлення вводу виводу linux

Одна з найбільш цікавих і корисних тем для системних адміністраторів і нових користувачів, які тільки починають розбиратися в роботі з терміналом - це перенаправлення потоків введення виведення Linux. Ця особливість терміналу дозволяє перенаправляти висновок команд в файл, або вміст файлу на введення команди, об`єднувати команди разом, і утворити конвеєри команд.

У цій статті ми розглянемо як виконується перенаправлення потоків введення виведення в Linux, які оператори для цього використовуються, а також де все це можна застосовувати.

Як працює перенаправлення вводу виводу

Всі команди, які ми виконуємо, повертають нам три види даних:

  • Результат виконання команди, зазвичай текстові дані, які запросив користувач;
  • Повідомлення про помилки - інформують про процес виконання команди і в разі виникнення непередбачених обставин;
  • Код повернення - число, яке дозволяє оцінити чи правильно відпрацювала програма.

У Linux все субстанції вважаються файлами, в тому числі і потоки введення виведення linux - файли. У кожному дистрибутиві є три основних файлу потоків, які можуть використовувати програми, вони визначаються оболонкою і ідентифікуються за номером дескриптора файлу:

  • STDIN або 0 - цей файл пов`язаний з клавіатурою і більшість команд отримують дані для роботи звідси;
  • STDOUT або 1 - це стандартний висновок, сюди програма відправляє всі результати своєї роботи. Він пов`язаний з екраном, або якщо бути точним, то з терміналом, в якому виконується програма;
  • STDERR або 2 - всі повідомлення про помилки виводяться в цей файл.

Перенаправлення вводу / виводу дозволяє замінити один з цих файлів на свій. Наприклад, ви можете змусити програму читати дані з файлу в файлової системі, а не клавіатури, також можете виводити помилки в файл, а не на екран і т д. Все це робиться за допомогою символів "Lt;" і "Gt;".

Перенаправити висновок в файл

Все дуже просто. Ви можете перенаправити висновок в файл за допомогою символу gt ;. Наприклад, збережемо висновок команди top:

$ Cat top.log


символ "Gt;" перезаписує інформацію з файлу, якщо там вже щось є. Для додавання даних в кінець використовуйте "Gt; gt;". Наприклад, перенаправити висновок в файл linux ще для top:

$ Top -bn 5 1gt; top.log

Перенаправити помилки в файл

Щоб перенаправити висновок помилок в файл вам потрібно явно вказати дескриптор файлу, який збираєтеся перенаправляти. Для помилок - це номер 2. Наприклад, при спробі отримання доступу до каталогу суперкористувача ls видасть помилку:

Відео: LPIC 103.4 Використання потоків, конвеєрів і перенаправлень

$ Ls -l / root / 2gt; ls-error.log
$ Cat ls-error.log




Щоб додати дані в кінець файлу використовуйте той же символ:

$ Ls -l / root / gt; ls-error.log 2gt; 1

Спочатку буде відправлений висновок команди ls в файл ls-error.log c допомогою першого символу перенаправлення. Далі в той же самий файл будуть спрямовані всі помилки. Другий метод простіше:

$ Ls -l / root / gt; gt; ls-error.log

Стандартний введення з файлу

Більшість програм, крім сервісів, отримують дані для своєї роботи через стандартний ввід. За замовчуванням стандартний ввід очікує даних від клавіатури. Але ви можете змусити програму читати дані з файлу за допомогою оператора "Lt;":

$ Sort sort.output

Відео: 18. Перенаправлення RHEL 7.2

Таким чином, ми в одній команді перенаправляємо введення висновок linux.

Використання тунелів

Можна працювати не тільки з файлами, але і перенаправляти висновок однієї команди в якості введення інший. Це дуже корисно для виконання складних операцій. Наприклад, виведемо п`ять недавно змінених файлів:

Відео: 3.Linux для Початківців - Робота з терміналом

$ Echo test / tmp / | xargs -n 1 cp -v testfile.sh

Тут параметр -n 1 задає, що для однієї команди потрібно підставляти тільки один параметр, а опція -v в cp дозволяє виводити докладну інформацію про переміщення. Ще одна, корисна в таких випадках команда - це tee. Вона читає дані зі стандартного вводу і записує в стандартний висновок або файли. наприклад:

Поділися в соціальних мережах:

Схожі
Підключення пристрою linuxПідключення пристрою linux
Команда exit - завершити роботу командного процесора або поточного командного файлу.Команда exit - завершити роботу командного процесора або поточного командного файлу.
Команда sort в linuxКоманда sort в linux
Команда cat linuxКоманда cat linux
Команда find - пошук рядка символів в файліКоманда find - пошук рядка символів в файлі
Команда doskey - редагування і повторний виклик команд windows- створення макросів doskey.Команда doskey - редагування і повторний виклик команд windows- створення макросів doskey.
Історія команд linuxІсторія команд linux
Команда echo - висновок тексту на екран консоліКоманда echo - висновок тексту на екран консолі
Як подивитися прогрес dd linuxЯк подивитися прогрес dd linux
Відключаємо пароль sudo в linuxВідключаємо пароль sudo в linux
» » Перенаправлення вводу виводу linux