Слава России!
|
|
|
Совет месяца: Перенаправление
Даже если вы новичок в 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