Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Стандартный ввод-вывод и конвейеры командной строки

Стандартный ввод-вывод предоставляет мощные средства для операций в командной строке. Эти средства основаны на переадресации стандартного ввода-вывода. Большая часть команд операционной системы в их внутренней программной реализации построена таким образом, что для ввода и вывода данных используется исключительно стандартный ввод и вывод. В результате переадресация этого ввода или вывода в командной строке позволяет вместо экрана и клавиатуры использовать желаемые пользователю файлы.

Так, при использовании команды отображения информации о файлах, можно ее задать в виде

dir >имя_файла

(или соответственно ls >имя_файла) и желаемая информация для будущего употребления запомнится в указанном файле. Ряд команд операционной системы строятся как фильтры, т.е. используют и стандартный ввод, и стандартный вывод. К таким командам относятся команды sort, more (общие для всех рассматриваемых ОС) и команда wc из Unix, которая подсчитывает число строк, слов и символов в файле, служащем для ввода информации (в частности, текста, вводимого с клавиатуры).

Практическое значение стандартного ввода-вывода особенно велико в связи с применением так называемых конвейеров в командной строке. Конвейер представляет заданное в команде связывание стандартного вывода одной команды с стандартным вводом другой – следующей в строке – команды. В качестве символа связывания команд в конвейер используется символ | (одинарная вертикальная черта). Конвейер по внешнему виду представляет запись

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

Здесь стандартный вывод команды команда1 автоматически связывается со стандартным вводом команды команда2. Поэтому данные результата первой команды не появляются на экране, а полностью передаются на вход второй команды, которая и использует их в качестве обрабатываемой ее информации. В одной составной команде может быть построен конвейер не только из двух, но и из любого числа команд, соединенных при записи символом вертикальной черты. Единственное требование при этом заключается в том, что для соединяемых таким путем команд первая из них должна использовать стандартный вывод, а вторая – стандартный ввод.

Практически наиболее часто в конвейерах используется команда more, которая оказывается заключительной в конвейере, поскольку выводит на экран, а не в стандартный вывод. Ее значение в том, что вывод на экран производится порциями по размеру экрана, это позволяет удобно наблюдать результаты объемного вывода на экране, где без ее использования часть выводимых данных исчезает – автоматически выдвигается за верхнюю границу экрана. Даже в операционных системах типа MS эта вспомогательная команда достаточно широко используется при текстовом выводе информации, в частности в составной команде

dir | more

(хотя следует помянуть, что модифицированная версия команды dir позволяет добиться того же эффекта с помощью дополнительной опции, но при этом надо помнить написание опции, а возможности команды more более универсальны и применимы с любой другой командой).

В Unix для использования конвейеров существует дополнительная команда tee, которая в качестве единственного аргумента требует указания имени файла и передавая данные со своего стандартного ввода на стандартный вывод одновременно запоминает передаваемые данные в заданном для нее файле. Она как бы кроме простой передачи с входа на выход еще и протоколирует все данные в файле.

При использовании стандартного ввода-вывода иногда возникает проблема запоминания сообщений об ошибках. Для вывода информации об ошибках предназначен стандартный поток ошибок, имеющий константное значение хэндла в Unix и OS/2, равное 2, причем этот вывод об ошибках по умолчанию поступает на экран.

Для переадресации стандартного ввода и стандартного вывода, как уже описывалось в гл. 2, в командной строке используются вспомогательные символы '<' и '>' соответственно. Для переадресации стандартного потока ошибок используется запись вида

команда 2> имя_файла

Предоставляется также возможность направлять данные об ошибках в стандартный поток обычного вывода. Для этого предназначена запись вида

команда 2>&1

Наконец, существует возможность при необходимости перенаправить стандартный вывод в стандартный поток ошибок, что задается записью

команда 1>&2

При использовании переназначений с помощью символов обозначений > имя_файла предыдущее содержимое файла с именем имя_файла теряется (внутренними процедурами файл открывается для записи с усХчением Фо нуля предыдущеУо содержимоУо). В ряде случаХв, особенно при протоколированШи ошШбок, может представлять интерес сохранение предыдущего содержимого указанного таким образом файла и приписывание в его конец новых данных. Для решений этой задачи предлагается использовать вместо одного символа '>' два таких символа подряд и без разрыва между ними.

В частности команда

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

указывает – брать исходные данные в файле файл1, помещать данные стандартного вывода в файл файл2 и дописывать в конец файла файл3 сообщения стандартного потока ошибок текущей команды команда.

 

<== предыдущая лекция | следующая лекция ==>
Групповое выполнение и фоновый запуск команд | Командные файлы и сценарии
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 3364; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.