Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы OC UNIX_часть3.doc
Скачиваний:
24
Добавлен:
18.04.2015
Размер:
543.23 Кб
Скачать

1.3. Потоковый редактор sed

Редактор sed(streameditor) предлагает большинство средств редактированияedс идентичными командами. Разница в том, чтоsed– это сложный фильтр, аed– интерактивный редактор. Это делаетsedболее полезным в сценариях командного процессора, когда вы заранее знаете, какие шаги редактирования необходимы для преобразования одного или более файлов (представляющих входной поток символов, которым по умолчанию является ваш стандартный ввод) в файл вывода или поток (по умолчанию – ваш стандартный вывод). Редакторsedможно использовать, задав сценарий команд редактирования, которые не отличаются от последовательностей, вручную вводимых при работе с редакторомed, чтобы преобразовать входной поток в выходной.

Эта программа наиболее часто применятся при написании Shell–программ. Команда sedдает возможность однопроходового редактирования файла:

sed `команда_ed` имя_файла,

где команда_ed – команда редактораed, которая приложена к содержимому файла. Указанная команда будет относиться ко всему файлу, если только не указаны конкретные строки для редактирования. Результатsedнаправляется на стандартный выход, который, как вы знаете, может быть переназначен при необходимости.

Настоятельно не рекомендуется направлять вывод sedв тот же файл, к которому вы применяетеsed!

Следующий пример показывает, как можно сменить все строки, в которых встречается слово text1, на строки, в которых это слово изменено наtext2или другое слово в файлеfile:

$ sed s/text1/text2/g file1

Буква gдобавлена для случая, если словоtext1появится больше одного раза в какой–нибудь строке.

Если вы хотите сохранить ваши изменения, необходимо переназначить выход sedв файл и после этого применить командуmv:

$ sed s/text1/text2/g file1 > temp

$ mv temp file1

Аналогичным образом производятся удаления из файла, например, строки с номером 3:

$ sed 3d file1

Команда sedчасто используется для редактирования содержимого переменныхShell:

$ echo $strip

x–y–z

$ echo $strip|sed s/–/+/g

x+y+z

$

1.4. Контрольные вопросы

  1. Какие бывают типы редакторов?

  1. Чем отличаются строковые редакторы от экранных?

  1. Как работает потоковый редактор sed?

  2. В каких режимах работает редактор ed?

  3. Какие категории команд используются в редакторе ed?

  4. Какие способы нумерации строк при адресации существуют в редакторе ed?

Глава 2. Командные процессоры ос unix

При интерактивной работе с операционной системой пользователь постоянно сталкивается с необходимостью отдавать ей команды. В UNIX эту работу выполняет программа, которая называется командным процессором(shell). Иногдакомандный процессорназывают шеллом или оболочкой, илиинтерпретатором команд(последнее неточно, потому что круг задачкомандного процессорашире, чем интерпретация команд).

Shellдействует как посредник между вами и ядром операционной системы. Ядро – это часть операционной системы, которая всегда находится в памяти компьютера, это программа. Командный процессор преобразует ваши команды в инструкции для операционной системы, а операционная система превращает их в инструкции для аппаратных средств компьютера. По сути, именно оболочка придает определенную “персонализацию” системам UNIX.

Командный процессор выполняет в системе следующие задачи:

  • интерпретация команд пользователя, в том числе разбор командной строки;

  • запуск программ;

  • организация перенаправлений потоков между процессами;

  • интерпретация языка скриптов и их выполнение;

  • управление заданиями;

  • интерпретация шаблонов имен файлов;

  • подстановка имен файлов в командную строку.

Кроме того, shellявляется мощным языком программирования.

Любая команда, являющаяся отдельной программой, т.е. невстроенной в интерпретатор, будет выполняться одинаково, независимо отshell'a. Например, если вы хотите что–то напечатать, команда печати всегда работает одинаково.

Некоторые команды встроены в shell, т.е. они являются частью программы оболочки и, как следствие, могут выполняться по-разному в зависимости от оболочки, в которой они запускаются. Есть три вида команд, встроенных вshell:

  • общие командызапускаются несколько быстрее, так как они являются частью оболочки;

  • команды адаптациипозволяют адаптировать оболочку;

  • команды программированияобразуют язык программирования оболочки.

При смене shell'a вы не заметите никакой разницы между общими командами, которые встроены просто для повышения быстродействия. Однако команды адаптации и программирования изменяются.

Примером общих команд, встроенных в оболочку, служат команды cd,echo,pwd,login,umask.

Адаптация включает в себя создание новых команд или новых имен для старых команд и привлечение новых возможностей. Примером общепринятой адаптации служит изменение стимула (или приглашения системы).

Можно персонализировать свою работу, привлекая удобные возможности, встроенные в различные оболочки. Почти все такие возможности связаны с этапом преобразования команды. Большинство различий между оболочками кроется в том, как они адаптированы.

Примером команд адаптации могут служить следующие команды:

  • alias– создает новое имя для команды;

  • export– создает переменную среды;

  • set– включает и выключает некоторые опцииshell'a;

  • unalias– удаляет псевдоним команды.