Журнал LinuxFormat - перейти на главную

Слава России!

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
м (SEO TROLLING переименовал страницу LXF89:Совет месяца в Слава России!)
(Содержимое страницы заменено на «{{SEO}}»)
 
Строка 1: Строка 1:
== Совет месяца: Перенаправление ==
+
{{SEO}}
 
+
Даже если вы новичок в 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''' – специальное устройство, поглощающее все, что было в него послано:
+
<pre>
+
find / -name *.jpg 2>/dev/null
+
</pre>
+

Текущая версия на 07:16, 13 октября 2023

Персональные инструменты
купить
подписаться
Яндекс.Метрика