Здавалка
Главная | Обратная связь

Перенаправление потоков.



Поток. Конвейерная обработка. Перенаправление ввода вывода. NOHUP.

Поток – абстракция(последовательность данных), используемая для чтения или записи файлов, сокетов и т. п. в единой манере. То есть, вывод на экран представляется как запись в файл, а ввод — как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода.

Стандартные потоки — абстракции(последовательность данных), позволяющие осуществлять взаимодействие с пользователем как чтение и запись в файл. Кроме потоков ввода и вывода, существует еще и стандартный поток ошибок, на который выводятся все сообщения об ошибках и те информативные сообщения о ходе работы программы, которые не могут быть выведены в стандартный поток вывода. Стандартные потоки привязаны к файловым дескрипторам с номерами 0, 1 и 2. Стандартный поток ввода (stdin) — 0 обычно клавиатура; Стандартный поток вывода (stdout) — 1 обычно монитор; Стандартный поток ошибок (stderr) — 2.

Конвейерная обработка (pipe)

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

Синтаксис: команда1 | команда2

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

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

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

rm ВременныйФайл

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

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

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

Перенаправление ввода/вывода, nohub, &

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

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

Перенаправление потоков.

Номера от 0 до 9 представляют первые 10 дескрипторов. Для задания требуемого дескриптора перед оператором перенаправления введите его номер. Если дескриптор не определен, то по умолчанию оператором перенаправления ввода < будет единица (0),а оператором перенаправления вывода > будет (1) После ввода оператора < или > необходимо указать, откуда читать и куда записывать данные. Можно задать имя файла или любой из существующих дескрипторов.

Описание

> Записывает данные на выходе команды вместо командной строки в файл или на устройство, например, на принтер.

<Читает поток входных данных команды из файла, а не с клавиатуры.

>> Добавляет выходные данные команды в конец файла, не удаляя при этом существующей информации из файла.

>&Считывает данные на выходе одного дескриптора как входные данные для другого дескриптора.

<& Считывает входные данные одного дескриптора как выходные данные другого дескриптора.

| Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна под названием «канал».

В следующей таблице представлены доступные дескрипторы.

Дескриптор Числовой эквивалент Описание

STDIN 0 Ввод с клавиатуры

STDOUT 1 Вывод в окно командной строки

STDERR 2 Ошибка вывода в окно командной строки

UNDEFINED 3-9

Эти дескрипторы определяются индивидуально для каждой прикладной программы.

Ввода-вывода. Использование потоков не имело бы никаких преимуществ перед прямым программированием устройств, если бы их нельзя было переназначать с одного устройства на другое, а также переназначить ввод/вывод информации устройством в файл. Перенаправление обычно осуществляется вставкой специального символа > между командами. Обычно синтаксис выглядит так:

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

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

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

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

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

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

NOHUP — UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (SIGHUP). Таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы. Если стандартным выводом (stdout) команды является терминал, то он и стандартный вывод ошибок (stderr) перенаправляются с добавлением в файл «nohup.out» в текущей директории; если это невозможно сделать, то перенаправление происходит в файл «$HOME/nohup.out». Если и это невозможно сделать, то команда не запускается совсем. При создании файлов «nohup.out» или «$HOME/nohup.out» команда nohup устанавливает им атрибуты доступа только для владельца этих файлов (группа и остальные пользователи не имеют прав доступа к этим файлам). Если же эти файлы уже существуют, то их права доступа не изменяются.

nohup не переводит автоматически команду в фоновый режим; пользователь должен сделать это явным образом, завершив командную строку символом «&».

&. Используется для перенаправления команды в фоновый режим. Ставится в конце команды.

 

Основные возможности текстового редактора vi§

Описание.

Редактор vi - один из первых редакторов, разработанных для операционных систем UNIX. Он и по сей день остается одним из самых мощных редакторов и стандартно поставляется практически с каждой операционной системой типа UNIX. В нем отсутствует меню, и все действия осуществляются с помощью клавиш и клавиатурных комбинаций. Редактор vi работает в двух режимах - командном и набора текстов. Сразу после запуска vi находится в командном режиме. В этом режиме нажатия клавиш интерпретируются как команды редактору, а не как текст, вводимый в документ. Чтобы переключиться в режим ввода текста, необходимо нажать одну из клавиш: a, i или o. Клавиша a означает append (присоединить). В этом режиме вводимый текст вставляется после символа, на котором находится курсор. Клавиша i означает insert (вставить). В этом режиме вводимый текст вставляется перед символом, на котором находится курсор. И, наконец, клавиша o означает open (открыть). Это приводит к тому, что после строки, на которой находится курсор, в текст вставляется новая строка. Затем курсор перемещается на новую строку, и редактор переходит в режим insert, разрешая ввод текста на новой строке. Имеется также несколько других команд для установки режима ввода текста, которые применяются не так часто. Это команда O, которая добавляет пустую строкцу над текущей строкой; и команда A, которая начинает вставлять текст в конце текущей строки. Из режима ввода текста в командный режим можно вернуться нажатием клавиши Esc. При переходе в командный режим редактор vi по умолчанию выдает звуковой сигнал.

Что такое man?

MAN – команда Unix, предназначенная для форматирования и вывода справочных страниц, которая предоставляется почти со всеми *nix-дистрибутивами. Каждая страница справки является самостоятельным документом и пишется разработчиками программного обеспечения.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.