Перенаправление (программное обеспечение)

Перенаправление (программное обеспечение)

В информатике перенаправление — это возможность присущая многим командным оболочкам, таким как командные оболочки UNIX, позволяющая перенаправлять стандартные потоки в определенное пользователем место, например в файл.

Содержание

Перенаправление стандартных потоков ввода вывода

Перенаправление обычно осуществляется вставкой специального символа > между командами. Обычно синтаксис выглядит так:

команда1 > файл1

выполняет команду1, помещая стандартный вывод в файл1.

команда1 < файл1

выполняет команду1, используя в качестве источника ввода файл1 (вместо клавиатуры).

команда1 < файл1 > файл2

совмещает два предыдущих варианта. Выполняет команду1 вводя из файла1 и выводя в файл2

Конвейеры

Конвейеры — это возможность нескольких программ работать совместно, когда выход одной программы непосредственно идет на вход другой без использования промежуточных временных файлов. Синтаксис:

команда1 | команда2

Выполняет команду1 используя её поток вывода как поток ввода при выполнении команды2, что равносильно использованию двух перенаправлений и временного файла:

команда1 > ВременныйФайл
команда2 < ВременныйФайл
rm ВременныйФайл

Хороший пример командных конвейеров — это объединение echo с другой командой для получения интерактивности в неинтерактивных средах, к примеру:

echo -e "ИмяПользователя\nПароль" | ftp localhost

Здесь запускается ftp клиент, который подключается к localhost под именем ИмяПользователя, нажимает Enter и затем вводит пароль Пароль.

Перенаправление в/из стандартных файловых дескрипторов

В командной оболочке UNIX, произошедшей из Bourne shell, предыдущие два действия можно усовершенствовать, указав номер(файловый дескриптор) непосредственно перед символом перенаправления. Этот номер указывает какой именно поток используется для перенаправления. В UNIX существуют следующие стандартные потоки ввода/вывода:

Дескриптор Название Описание
0 stdin Стандартный ввод
1 stdout Стандартный вывод
2 stderr Стандартный вывод ошибок

К примеру:

команда1 2> файл1

выполняет команду1 направляя стандартный поток ошибок в файл1

В командных оболочках произошедших от C Shell по правилам синтаксиса для указания потока, в который осуществляется перенаправление нужно добавлять символ & после символа перенаправления.

Часто стандартный поток ошибок объединяют со стандартным потоком вывода, чтобы можно было обрабатывать ошибки и обычные результаты работы программы вместе. К примеру:

find / -name .profile > results.txt 2>&1

попытается найти все файлы с именем .profile. Если выполнять эту команду без перенаправлений она будет направлять результаты поиска в stdout, а сообщения об ошибках(к примеру о недостаточности прав доступа при попытке поиска в защищенных директориях) в stderr. По умолчанию эти роли выполняет консоль. Если стандартный поток вывода направлен в файл результаты, то ошибки по-прежнему будут направляться в консоль. Чтобы и ошибки и результаты поиска направлялись в файл results.txt стандартные потоки ошибок и вывода были объединены используя 2>&1.

Написание 2>&1 перед > не будет работать, так как когда интерпретатор прочитает 2>&1, он ещё не знает куда перенаправлен стандартный поток вывода, поэтому потоки ошибок и вывода не будут объединены.

Если объединенный результат нужно направить на вход другой программы посредством конвейера, тогда последовательность 2>&1 должна стоять перед знаком конвейера. К примеру:

find / -name .profile 2>&1 | less

Упрощенная форма записи команды:

команда > файл 2>&1

выглядит так:

команда &> файл

или

команда >& файл

Цепочка конвейеров

Команды перенаправления и конвейеризации могут быть объединены в цепочки для получения более сложных команд, к примеру:

ls | grep '.sh' | sort > shlist

Получает список содержимого текущей директории, который фильтруется, оставляя только строки содержащие '.sh', затем этот отфильтрованный список лексически сортируется и окончательный результат помещается в файл shlist. Конструкции подобного типа часто встречаются в скриптах командной оболочки UNIX.

Перенаправление в несколько выводов

Стандартная команда tee может перенаправить вывод команды в несколько мест одновременно. Пример:

ls -lrt | tee файл1

направляет стандартный вывод команды ls -lrt (список файлов) как в консоль так и в файл1.

Перенаправление с добавлением

В командной оболочке Bash можно осуществить перенаправление в файл с добавлением в конец. При этом информация, хранящаяся в файле не будет удалена, а вся новая информация будет добавлена в конец этого файла. Синтаксис:

команда1 >> файл1

Встроенный документ

Некоторые оболочки, и даже прикладные языки высокого уровня (PHP, Perl) допускают синтаксис встроенных документов (см. Heredoc-синтаксис), позволяющий направлять входной поток из самого файла программы, например:

cat<<EOF
Здесь помещается произвольный текст,
в том числе включающий в себя специальные символы
EOF

Завершающая сигнатура окончания встроенного документа EOF (можно использовать произвольное значение, но часто используется именно EOF - соответственно смыслу) должна начинаться с начала строки.

Внешние ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Перенаправление (программное обеспечение)" в других словарях:

  • Шпионское программное обеспечение — Spyware (шпионское программное обеспечение) программа, которая скрытным образом устанавливается на компьютер с целью полного или частичного контроля за работой компьютера и пользователя без согласия последнего. В настоящий момент существует… …   Википедия

  • Перенаправление — Для информации по перенаправлению страниц в Википедии, см. Википедия:Перенаправления. Перенаправление может означать: Перенаправление (программное обеспечение) функция командных оболочек Перенаправление URL …   Википедия

  • Squid — Это статья о программном обеспечении. О высокочувствительном измерительном приборе см. СКВИД Squid Тип Прокси сервер Операционная система Кроссплатформенное программное обеспечение Последняя версия 3.2.1 (15 августа 2012) Лицензия GNU …   Википедия

  • bash — У этого термина существуют и другие значения, см. Bash (значения). GNU Bourne Again SHell Типичная сессия в bash …   Википедия

  • Creative Commons — Эта статья  о организации. О созданных ею лицензиях см. Лицензии Creative Commons. Корпорация Creative Commons (Creative Commons Corporation) …   Википедия

  • Вредоносная программа — (на жаргоне антивирусных служб «зловред», англ. malware, malicious software  «злонамеренное программное обеспечение»)  любое программное обеспечение, предназначенное для получения несанкционированного доступа к вычислительным… …   Википедия

  • OpenSSH — Тип Удалённый доступ Разработчик Проект OpenBSD Операционная система …   Википедия

  • Кулхацкер — Компьютерный сленг разновидность сленга, используемого как профессиональной группой IT специалистов, так и другими пользователями компьютеров. История Появление терминов Бурный рост со второй половины XX века компьютерных технологий, и, в… …   Википедия

  • АПВС — Компьютерный сленг разновидность сленга, используемого как профессиональной группой IT специалистов, так и другими пользователями компьютеров. История Появление терминов Бурный рост со второй половины XX века компьютерных технологий, и, в… …   Википедия

  • ЕВПОЧЯ — Компьютерный сленг разновидность сленга, используемого как профессиональной группой IT специалистов, так и другими пользователями компьютеров. История Появление терминов Бурный рост со второй половины XX века компьютерных технологий, и, в… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»