Одне з найважливіших і цікаві теми під управлінням Linux є перенаправлення вводу/виводу. Ця функція командного рядка дозволяє переспрямовувати вхідні та/або вихідні команди з та/або у файли, або об’єднувати кілька команд разом за допомогою каналів для утворення так званого “командний конвеєр”.
Усі команди, які ми виконуємо, принципово виробляють два види виводу:
У Linux та інших системах, подібних до Unix, є три файли за замовчуванням, названі нижче, які також ідентифікуються оболонкою за допомогою номерів дескрипторів файлів:
Тому переспрямування вводу -виводу дозволяє змінювати джерело введення команди, а також те, куди надсилаються її вихідні повідомлення та повідомлення про помилки. І це стало можливим завдяки
“ та “>”
оператори переспрямування.
Ви можете перенаправити стандартний вивід, як у прикладі нижче, тут ми хочемо зберегти вихідний файл верхня команда для подальшої перевірки:
$ top -bn 5> top.log.
Де прапори:
-b
- дозволяє зверху для запуску в пакетному режимі, щоб ви могли перенаправити його вихід у файл або іншу команду.-n
- вказує кількість ітерацій до завершення виконання команди.Ви можете переглянути вміст top.log
файл за допомогою команда кота наступним чином:
$ cat top.log.
Щоб додати результат команди, використовуйте “>>”
оператор.
Наприклад, щоб додати результат верхня команда вище в top.log файл, особливо в сценарії (або в командному рядку), введіть рядок нижче:
$ top -bn 5 >> top.log.
Примітка: Використовуючи номер дескриптора файлу, наведена вище команда перенаправлення виводу така ж, як:
$ top -bn 5 1> top.log.
Щоб перенаправити стандартну помилку команди, потрібно чітко вказати номер дескриптора файлу, 2
щоб оболонка зрозуміла, що ви намагаєтесь зробити.
Наприклад, ls команда Нижче буде видано помилку при виконанні звичайним системним користувачем без прав користувача root:
$ ls -l /root /
Ви можете перенаправити стандартну помилку у файл, як показано нижче:
$ ls -l / root / 2> ls -error.log. $ cat ls-error.log
Щоб додати стандартну помилку, скористайтеся командою нижче:
$ ls -l / root / 2 >> ls -error.log.
Також можна записати весь результат команди (як стандартний вихід, так і стандартну помилку) в один файл. Це можна зробити двома можливими способами, вказавши номери дескрипторів файлів:
1. Перший - відносно старий метод, який працює таким чином:
$ ls -l / root /> ls -error.log 2> & 1.
Наведена вище команда означає, що оболонка спочатку надішле вихідні дані ls команда до файлу ls-error.log (використовуючи > ls-error.log
), а потім записує всі повідомлення про помилки до дескриптора файлу 2 (стандартний вихід), який був перенаправлений у файл ls-error.log (використовуючи 2>&1
). Це означає, що стандартна помилка також надсилається до того самого файлу, що і стандартний вивід.
2. Другий і прямий метод:
$ ls -l / root / &> ls -error.log.
Ви також можете додати стандартний вивід та стандартну помилку до одного файлу так:
$ ls -l / root / & >> ls -error.log.
Більшість, якщо не всі команди, отримують вхід зі стандартного вводу, і за замовчуванням стандартний вхід приєднується до клавіатури.
Щоб перенаправити стандартний вхід з файлу, відмінного від клавіатури, скористайтеся “ оператора, як показано нижче:
$ кітЯк перенаправити стандартний вхід/вихід у файл
Ви можете одночасно виконувати стандартний вхід, стандартне перенаправлення виводу за допомогою команда сортування як нижче:
$ sortsort.output. Як використовувати перенаправлення вводу/виводу за допомогою труб
Щоб перенаправити вихід однієї команди як вхід іншої, ви можете використовувати канали, це потужний засіб побудови корисних командних рядків для складних операцій.
Наприклад, наведена нижче команда буде перелічити п’ять найкращих нещодавно змінених файлів.
$ ls -lt | голова -n 5Тут варіанти:
-л
- включає довгий формат списку-t
– сортувати за часом модифікації з найновішими файлами показані першими-n
- визначає кількість рядків заголовка для відображенняВажливі команди для побудови трубопроводів
Тут ми коротко розглянемо дві важливі команди для побудови командних конвеєрів:
xargs який використовується для побудови та виконання командних рядків зі стандартного введення. Нижче наведено приклад трубопроводу, який використовує xargs, ця команда звикла скопіювати файл у кілька каталогів у Linux:
$ echo/home/aaronkilik/test//home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh.І варіанти:
-n 1
- вказує xargs використовувати щонайбільше один аргумент для кожного командного рядка та надсилати до команда cpcp
- копіює файл-v
– відображає хід виконання команди копіювання.Для отримання додаткових опцій використання та інформації прочитайте xargs man page:
$ man xargsА. трійник команда читає зі стандартного вводу та записує до стандартного виводу та файлів. Ми можемо продемонструвати, як трійник працює наступним чином:
$ echo "Тестування роботи команди tee" | трійник файл1Файлові або текстові фільтри зазвичай використовуються з трубами для ефективні операції з файлами Linux, обробляти інформацію потужними способами, такими як реструктуризація виводу команд (це може бути життєво важливим для створення корисних звітів про Linux), змінюючи текст у файлах плюс кілька інших Завдання системного адміністрування Linux.
Щоб дізнатися більше про фільтри та канали Linux, прочитайте цю статтю Знайдіть 10 найкращих IP -адрес, які мають доступ до сервера Apache, показує корисний приклад використання фільтрів та труб.
У цій статті ми пояснили основи перенаправлення вводу -виводу в Linux. Не забудьте поділитися своїми думками через розділ відгуків нижче.