Главная » Программирование для UNIX » Повседневная работа: файлы и основные команды

0

Информация в  системе UNIX   хранится  в  файлах,  которые по  сути  своей  очень  похожи  на  обычные офисные папки  для документов. У каждого файла есть  имя, содержимое, место для хранения и некоторая  административная информация о его владельце и размере. Файл

может содержать письмо, список имен  или адресов, исходные тексты программы, данные  для обработки программой или  даже саму  программу в исполняемой форме  и другие нетекстовые материалы.

Файловая система UNIX  организована таким образом, что вы можете работать со своими файлами, не вмешиваясь в работу других пользователей и не позволяя другим мешать себе. Несть  числа командам, осуществляющим  различные манипуляции с файлами; для  начала  рассмотрим только самые часто используемые. Глава 2 предлагает систематическое описание файловой системы и знакомит с многими другими командами, имеющими отношение к работе с файлами.

Создание файлов – редактор

Если  надо  напечатать письмо, документ или программу, каким образом  извлечь информацию, хранящуюся в компьютере? Большинство задач такого рода  выполняется  с  помощью текстового редактора – программы  для   хранения и  обработки информации  в  компьютере. Практически в каждой  UNIX-системе есть  экранный  редактор –  редактор, который использует способность современных терминалов отражать редакционные изменения, как только они сделаны. Два наибо лее популярных экранных редактора – это vi и emacs.

Мы не будем  описывать здесь  конкретные редакторы, частично из-за ограниченного объема книги, а частично потому, что ни  один из них  не является стандартным.1  Однако есть более старый редактор ed, который наверняка доступен в каждой системе. Он не поддерживает специальные возможности, присущие  некоторым терминалам, поэтому может работать на любом. Он также является основой других важнейших программ (в том числе нескольких экранных редакторов), так что стоит того, чтобы его изучили. Краткое описание этого редактора при водится в приложении 1.

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

Чтобы создать с помощью ed файл с именем junk, содержащий некоторый текст, выполните следующее:

$ ed                              Вызывает текстовый редактор

a                                   команда ed для  добавления текста теперь вводите

любой текст …

1        Хотя сейчас, конечно, можно сказать, что  редактор vi  все-таки является стандартным. – Примеч. науч. ред.

.                  Введите отдельно «.» – завершение ввода  текста

w  junk                           Записать текст в файл с именем  junk

q                                   Выйти из  ed

$

Команда a (append – добавить) сообщает ed о начале ввода текста. Символ «.», обозначающий конец текста, должен быть введен в начале отдельной строки. Не забудьте его – до тех пор пока  этот символ не будет введен, ни одна из последующих команд ed не будет распознана – все, что вводится, будет восприниматься как продолжение текста.

Команда редактора w (write – записать) сохраняет введенную информацию; w  junk сохраняет ее в файле с именем junk. Любое слово может выступать в качестве имени файла; в данном примере было выбрано слово junk (мусор), чтобы показать, что файл не очень-то важный.

В ответ ed выдает количество символов, помещенных в файл. До ввода  команды w ничего записано не будет, так что если отключиться и уйти, то информация не будет сохранена в файле. (Если  отключиться во время редактирования, то данные, которые обрабатывались, сохраняются в файл ed.hup, с ним можно продолжать работать в следующей сессии.) Если  во время редактирования происходит отказ системы (то есть изза сбоя аппаратного или  программного обеспечения система внезапно останавливается), то файл будет содержать только те данные, которые были записаны последней командой write. После же выполнения w информация записана навсегда; чтобы получить к ней доступ, введите

$ ed junk

Конечно же, введенный текст можно редактировать: исправлять орфографические  ошибки, изменять стиль формулировок,  перегруппировывать абзацы и т. д. Закончив, введите команду q (quit – выход), чтобы выйти из редактора.

Что там за файлы?

Создадим два файла, junk и temp, чтобы знать, чем мы располагаем:

$ ed a

To be or  not  to  be

.

w  junk

19

q

$ ed a

That  is the  question.

.

w  temp

22

q

$

Счетчики количества символов в ed учитывают и символ конца каждой строки, называемый разделителем строк (newline), с помощью которого система представляет Return.

Команда ls выводит список имен (не содержимого) файлов:

$ ls junk temp

$

Это действительно два  только что созданных файла. (В списке могли быть  и другие файлы, которых вы не создавали.) Имена автоматически сортируются в алфавитном порядке.

Как  и у многих других команд, у ls есть параметры, предназначенные для изменения поведения команды по умолчанию. Параметры вводятся в командной строке после  имени команды, обычно  они составлены из знака минус «–» и какой-то одной буквы, которая и определяет конкретное значение. Например, команда ls  –t задает вывод  файлов, упорядоченный по времени (time) их последнего изменения, начиная с самого свежего.

$ ls -t temp junk

$

Параметр -l обеспечивает расширенный (long) список, предоставляющий  больше информации о каждом файле:

$ ls -l

total  2

–rw–r––r–– 1 you                  19 Sep 26 16:25  junk

–rw–r––r–– 1 you                  22 Sep 26 16:26  temp

$

total 2 сообщает, сколько блоков дискового пространства занято фай лами; блок – это обычно  512  или  1024  символа. Строка –rw–r––r— информирует о том, у кого есть права на чтение файла и запись; в данном случае владелец you может читать файл и писать в него,  а остальные пользователи могут  только читать. Следующий за строкой прав  доступа  символ 1 –  это  количество ссылок (links) на  файл; пока  не  обращайте на него  внимания,  поговорим о нем  в главе 2. Владелец файла (то есть пользователь, который его создал) – это you. 19 и 22 – это значения количества символов в соответствующих файлах; они  совпадают

со значениями, выданными ed. Далее следуют дата и время последнего изменения файла.

Параметры могут  быть  сгруппированы: ls –lt  выдает те же  данные, что и  ls –l, но отсортированные по времени, начиная с самого нового. Параметр –u предоставляет информацию о том, когда файлы использовались: ls  –lut выдает расширенный (–l)  список, отсортированный в порядке времени использования, начиная с последнего. Параметр –r изменяет порядок вывода на обратный, так что ls –rt выводит файлы в порядке, обратном времени их последнего изменения. Можно также после  команды указать имена файлов, тогда  ls выведет информацию только по указанным файлам:

$ ls -l junk

–rw–r––r–– 1 you                  19 Sep 26 16:25  junk

$

Строки, следующие за именем команды в командной строке, как –l и junk  в  примере  выше, называются аргументами команды.  Обычно  аргументы –  это  параметры или  имена  файлов, которые должны использоваться командой.

Запись параметра при помощи знака минус и одной (например, –t) или  нескольких  букв  (например,  –lt) –  это  общепринятое  соглашение. Обычно если команда допускает использование таких необязательных параметров, то они должны предшествовать именам файлов, но возмо жен  и другой порядок. Хотя  надо отметить, что UNIX-программы достаточно капризны в том, что касается обработки нескольких параметров. Например, стандартная UNIX System 7 ls не воспримет

$ ls –l  –t                     Не работает в UNIX System 7

как синоним ls  –lt, тогда  как другие программы требуют разделения параметров.

По мере изучения UNIX  станет понятно, что какая-то регулярность или  система в отношении необязательных аргументов практически отсутствует.  У каждой команды есть только ей присущие особенности, и каждая сама определяет, что будет обозначать какая буква (так что одна и та же функция в разных командах может быть  обозначена разными буквами). Такая непредсказуемость приводит в замешательство, и имен но ее часто  называют главным недостатком системы. И хотя ситуация постепенно улучшается – в новых версиях уже больше единообразия, единственное, что можно порекомендовать – это стараться держать руководство поблизости, когда будете писать собственные программы.

Источник: Керниган Б., Пайк Р., UNIX. Программное окружение. – Пер. с англ. – СПб: Символ-Плюс, 2003. – 416 с., ил.

По теме:

  • Комментарии