Изучите основы того, как работает перенаправление ввода-вывода (ввода-вывода) Linux
Один из самых важных и интересные темы под управлением Linux перенаправление ввода / вывода. Эта функция командной строки позволяет перенаправлять ввод и / или вывод команд из и / или в файлы или объединять несколько команд вместе с помощью каналов для формирования так называемого «командный конвейер”.
По сути, все выполняемые нами команды производят два вида вывода:
результат команды - данные, для создания которых предназначена программа, и
сообщения о состоянии программы и об ошибках, информирующие пользователя о деталях выполнения программы.
В Linux и других Unix-подобных системах есть три файла по умолчанию, указанные ниже, которые также идентифицируются оболочкой с помощью номеров файловых дескрипторов:
stdin или 0 - он подключен к клавиатуре, большинство программ считывают ввод из этого файла.
stdout или 1 - он прикреплен к экрану, и все программы отправляют свои результаты в этот файл и
stderr или 2 - программы отправляют сообщения о состоянии / ошибках в этот файл, который также прикрепляется к экрану.
Следовательно, перенаправление ввода-вывода позволяет вам изменять источник ввода команды, а также то, куда отправляются ее вывод и сообщения об ошибках. И это стало возможным благодаря “ и “>” операторы перенаправления.
Как перенаправить стандартный вывод в файл в Linux
Вы можете перенаправить стандартный вывод, как в примере ниже, здесь мы хотим сохранить вывод верхняя команда для последующего осмотра:
$ 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.
Как перенаправить стандартную ошибку в файл в Linux
Чтобы перенаправить стандартную ошибку команды, вам необходимо явно указать номер дескриптора файла, 2 чтобы оболочка понимала, что вы пытаетесь сделать.
Например, команда ls ниже приведет к ошибке при выполнении обычным системным пользователем без привилегий root:
$ ls -l / корень /
Вы можете перенаправить стандартную ошибку в файл, как показано ниже:
Чтобы добавить стандартную ошибку, используйте команду ниже:
$ 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.
Как перенаправить стандартный ввод в файл
Большинство, если не все команды, получают ввод со стандартного ввода, и по умолчанию стандартный ввод прикреплен к клавиатуре.
Чтобы перенаправить стандартный ввод из файла, отличного от клавиатуры, используйте “ оператор, как показано ниже:
$ cat Перенаправить стандартный ввод в файл
Как перенаправить стандартный ввод / вывод в файл
Вы можете одновременно выполнять стандартный ввод и перенаправление стандартного вывода, используя команда сортировки как показано ниже:
$ sort sort.output.
Как использовать перенаправление ввода / вывода с помощью каналов
Чтобы перенаправить вывод одной команды на ввод другой, вы можете использовать каналы, это мощное средство построения полезных командных строк для сложных операций.
Например, приведенная ниже команда будет перечислить пять самых популярных недавно измененных файлов.
$ ls -lt | голова -n 5
Здесь варианты:
-l - включает длинный формат листинга
-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 использовать не более одного аргумента в командной строке и отправлять в команда cp
cp - копирует файл
-v – отображает ход выполнения команды копирования.
Чтобы узнать больше о вариантах использования и информации, прочтите xargs страница руководства:
$ man xargs
А тройник Команда читает из стандартного ввода и записывает в стандартный вывод и файлы. Мы можем продемонстрировать, как тройник работает следующим образом:
$ echo "Тестирование работы команды tee" | тройник file1
Пример команды tee
Файловые или текстовые фильтры обычно используются с трубами для эффективные файловые операции Linux, для обработки информации мощными способами, такими как реструктуризация вывода команд (это может быть жизненно важно для генерация полезных Linux-отчетов), изменение текста в файлах, а также несколько других Задачи системного администрирования Linux.
Чтобы узнать больше о фильтрах и конвейерах Linux, прочтите эту статью Найдите 10 основных IP-адресов, по которым осуществляется доступ к серверу Apache, показывает полезный пример использования фильтров и каналов.
В этой статье мы объяснили основы перенаправления ввода-вывода в Linux. Не забудьте поделиться своими мыслями в разделе отзывов ниже.