LXF89:Совет месяца

Материал из Linuxformat.

Перейти к: навигация, поиск

Совет месяца: Перенаправление

Даже если вы новичок в Linux, вы наверняка использовали перенаправление при работе в командной строке. Для обмена данными с выполняемыми командами используются символы > и <. Чаще всего их применяют, чтобы сохранить вывод команды в файле. Например, набрав dmesg > local.log, вы запишите содержимое кольцевого буфера ядра (иными словами, вывод dmesg) в файл local.log.

> local.log предписывает перезаписать указанный файл, если он уже существует. Использовав >> вместо >, можно дописать вывод dmesg в local.log. Символ < подает содержимое файла-аргумента на вход команды, например, grep. Так, команда grep USB < local.log осуществит поиск строки «USB» в файле local.log.

Перенаправление работает, поскольку любое приложение Linux осуществляет ввод/вывод посредством трех стандартных «файловых дексрипторов» – стандартного ввода (stdin), вывода (stdout) и потока ошибок (stderr). Обычно вы этого не замечаете, поскольку по умолчанию этим дескрипторам соответствуют экран и клавиатура. Символы < и >, использованные в предыдущих примерах, относятся к stdin и stdout. Как же тогда обратиться к стандартному потоку ошибок? Для этого необходимо добавить перед символом > цифру 2 – номер файлового дескриптора, отвечающего stderr. Стандартному вводу соответствует значение 0, а выводу – 1. Это полезно знать, поскольку таким образом можно отфильтровать сообщения об ошибках от полезного вывода программы.

Например, рассмотрим команду find. Она часто жалуется на проблемы с правами доступа. Заставить ее замолчать можно, перенаправив стандартный поток ошибок в /dev/null – специальное устройство, поглощающее все, что было в него послано:

find / -name *.jpg 2>/dev/null
Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию