Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОС.doc
Скачиваний:
17
Добавлен:
05.11.2018
Размер:
2.06 Mб
Скачать

Команда grep

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

Синтаксис комнды:

grep шаблон файл(ы)<CR>

Например, чтобы отыскать любую строку, содержащую слово automation в файле johnson, введите:

grep automation johnson<CR>

Система ответит:

$ grep automation johnson<CR>

and office automation software

$

Вывод состоит из всех строк в файле johnson, которые содержат шаблон, указанный вами.

Если шаблон содержит много слов или любых символов, которые имеют специальное значение для системы UNIX (например, $, |, *, ? и т.д.) вводимый шаблон должен быть заключен в кавычки. Например, вы хотите найти строки, содержащие шаблон office automation. Ваша командная строка и ответ системы будут выглядеть следующим образом;

$ grep 'office automation' johnson<CR>

and office automation software

$

Но если вы не знаете, какое письмо содержит шаблон office automation, письмо johnson или sanders, можете ввести команду в следующем виде:

$ grep 'office automation' johnson sanders<CR>

johnson:and office automation software

$

Выводная строка говорит вам, что шаблон office automation найден только в файле johnson.

Дополнительно к команде grep система UNIX обеспечивает разновидности этой команды - это команды egrep и fgerp с несколькими ключами, облегчающими поиск.

Команда sort

Система обеспечивает эффективное средство для сортировки и слияния файлов.

Синтаксис команды:

sort файл(ы)<CR>

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

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

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

  • строки, начинающиеся с таких символов, как "%", "*" сортируются на основе символьного представления ASCII.

Например, вы имеете 2 файла group1 и group2, каждый из которых содержит перечень имен. Вы хотите отсортировать каждый список по алфавиту и затем объединить два списка в один. Вначале отобразите содержание файлов, выполнив команду cat для каждого файла. Экран будет выглядеть следующим образом:

$ cat group1<CR>

Smith, Allyn

Jones, Barbara

Cook, Karen

Moore, Peter

Wolf, Robert

$ cat group2<CR>

Frank, H. Jay

Nelson, James

West, Donna

Hill, Chales

Morgan Kristina

$

Вместо того, чтобы печатать эти два файла индивидуально, вы можете сделать это в одной командной строке. Если вы введете команду:

$ cat group1 group2<CR>

результат будет такой же.

Теперь отсортируйте и слейте эти два файла, выполнив команду sort. Результат выполнения команды sort будет распечатан на экране терминала, если вы не укажете иначе.

$ cat group1 group2<CR>

Cook, Karen

Frank, H. Jay

Hill, Chales

Jones, Barbara

Moore, Peter

Morgan, Kristina

Nelson, James

Smith, Allyn

West, Donna

Wolf, Robert

$

Дополнительно к комбинированию списков (как в примере), команда sort может перестанавливать строки и части строк (называемые полями) в соответствии с другими спецификациями, которые вы назначили в командной строке. Возможными спецификациями являются complex и beyond.

LINК

Системная функция link связывает файл с новым именем в структуре каталогов файловой системы, создавая для существующего индекса новую запись в каталоге. Синтаксис вызова функции link:

link(source file name, target file name);

где source file name - существующее имя файла, а target file name – новое (дополнительное) имя, присваиваемое файлу после выполнения функции link.

Файловая система хранит имя пути поиска для каждой связи, имеющейся у файла, и процессы могут обращаться к файлу по любому из этих имен. Ядро не знает, какое из имен файла является его подлинным именем, поэтому имя файла специально не обрабатывается. Например, после выполнения набора функций:

link("/usr/src/uts/sys","/usr/include/sys");

link("/usr/include/realfile.h","/usr/src/uts/sys/testfile.h");

на один и тот же файл будут указывать три имени пути поиска:

"/usr/src/uts/sys/testfile.h", "/usr/include/sys/testfile.h" и

"/usr/include/realfile"

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

UNLINК

Системная функция unlink удаляет из каталога точку входа для файла. Синтаксис вызова функции unlink:

unlink(pathname);

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

Экранный редактор vi

Введение

Редактор vi является мощным средством для создания и редактирования файлов. Он предназначен для работы на видеотерминале и использует окна, посредством которых можно просматривать текст файла. Несколько простых команд позволяют сделать изменения в тексте, которые очень быстро отображаются на экране. Редактор может отобразить одну или несколько строк текста. Он позволяет вам передвигать курсор в любую точку на экране или в файле, создавать, изменять или удалять текст. Вы можете также использовать некоторые команды построчного редактора, такие как глобальные команды, которые позволяют вам изменять множество появлений некоторой строки символов, используя одну команду. Чтобы двигаться по файлу, вы можете прокручивать текст вперед или назад.

Примечание. Не все терминалы обладают способностью прокрутки текста и поэтому средство прокрутки текста редактором vi зависит от типа используемого терминала.

Редактор vi имеет более 100 команд. В этом разделе описаны основные команды, которые позволят вам использовать vi просто, но эффективно. Особое внимание будет уделено выполнению следующих задач, позволяющих:

  • изменить окружение shell, чтобы установить конфигурацию вашего терминала;

  • сделать доступным автоматический возврат каретки;

  • начать работу с редактором vi, создать текст, исправить ошибки, записать текст в файл и завершить работу;

  • переместить текст внутри файла;

  • разбить и слить текст;

  • использовать специальные команды и сокращения;

  • использовать команды построчного редактора, доступные внутри vi;

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

  • восстановить файл, потерянный из-за прерывания сессии редактирования;

  • редактировать несколько файлов в одной сессии.

Начальные установки

Приведенное далее оприсание установок среды пользователя, в большей степени, относится к информации администратора системы. Однако эта информация полезна и для квалифицированного пользователя.

Установка «конфирурации» терминала

Прежде чем начать работать с редактором vi, необходимо сообщить системе UNIX, какой тип терминала будет использован. Это связано с тем, что программное обеспечение vi по разному исполнимо на разных типах терминалов.

Каждому типу терминала соответствует кодовое имя, которое распознается системой UNIX.

Чтобы установить конфигурацию терминала, необходимо ввести в файл .profile:

TERM= «terminal_name»<CR>

export TERM<CR>

В первой строке переменной TERM присваивается конкретное значение (тип терминала). Вторая строка экспортирует это значение; она передает это значение всем программам системы UNIX, выполнение которых зависит от типа используемого терминала.