Министерство общего и профессионального образования РФ
Волжский университет им.Татищева
Факультет «Информатика и телекоммуникации»
Кафедра «Информатика и системы управления»
УТВЕРЖДАЮ
Проректорпо УР
Е.В. Никифорова
2000 г.
МЕТОДИЧЕСКОЕ ПОСОБИЕ
дисциплина «Операционные системы» ОС UNIX
Работа с файлами и каталогами
для студентов специальностей
Вычислительные машины, системы, комплексы и сети
Информационные системы в технике и технологии
г.Тольятти
2001
Методическоепособие предназначено для студентов дневного и заочного отделенийспециальностей «Вычислительные машины, системы, комплексы и сети», «Информационныесистемы в технике и технологии» для изучения основных правил проектированияоперационных систем. Разработано на основании государственного стандарта.
Составитель:ст. преподаватель Трубачева С. И.
ФайловаясистемаСтруктура файловой системы
Файловаясистема построена из обыкновенных файлов, символических связей и справочников.Эти компоненты обеспечивают способ организации, поиска и управленияинформацией. Прежде чем подробно описывать компоненты, дадим короткий обзор.
Обыкновенныефайлы — это наборсимволов, хранящихся на диске. Они могут хранить тексты или программы или кодыпрограмм.
Специальныефайлы соответствуютфизическим устройствам (например, терминал или диск).
Символическаясвязь — это файл,который указывает на другой файл.
Справочник содержит имена других справочников(называемых подсправочниками) или файлов. Файлы вы можете группировать всправочники по своему выбору.
Всякийраз, когда вы взаимодействуете с системой UNIX, то вы находитесь в определенном месте структурыфайловой системы. Система UNIXавтоматически помещает вас в определенную точку в файловой системе каждый раз,когда вы регистрируетесь. Из этой точки вы можете передвинуться по иерархии,чтобы работать в любом вашем справочнике над любым файлом, к которому вы имеетедоступ.Ваш собственный справочник
Послетого как вы успешно завершили процедуру регистрации, система UNIX помещает вас в определенное место вструктуре файловой системы, называемое вашим собственным справочником.Регистрационное имя, назначенное вам системой UNIX, обычно является именем этого справочника. Каждыйпользователь с полномочным регистрационным именем имеет уникальный собственныйсправочник в файловой системе.
Система UNIX способна держать связь со всемисобственными справочниками, поддерживая один или более системных справочниковдля их организации. Например, собственные справочники с регистрационнымиименами startship, mary2 и jmrsсодержатся в системном каталоге, называемом home.
Внутривашего собственного справочника вы можете создавать файлы и подсправочники. Выможете перемещать и удалять ваши файлы и справочники и управлять доступом кним. Вы несете ответственность за все, что создаете в своем собственномсправочнике.
Текущийсправочник
Всевремя, что вы будете работать в вашем собственном справочнике, предполагается,что он ваш текущий рабочий справочник. Если вы перейдете в другой справочник,то он становится вашим текущим справочником.
Команда pwd печатает имя справочника, в которомвы сейчас работаете. Например, если ваше регистрационное имя startship и вы задаете команду pwd в ответ на первую после регистрацииподсказку, то система UNIXответит следующим образом:
$ pwd /home/startship
$
В ответсистема назовет вам имя справочника, в котором вы работаете (startship) и местоположение этого справочникав файловой системе. Имя пути /home/startship говорит, что справочник root (обозначен косой чертой в строке)содержит справочник home, который всвою очередь содержит справочник startship. Все другие косые черты в имени пути используются для разделения именсправочников и файлов, и показывают положение каждого справочника по
отношениюк root… Имя справочника, котороепоказывает местоположение справочника в этом пути, называется полным именемсправочника или именем пути.
Имяпути
Каждыйфайл и справочник системы UNIXидентифицируется уникальным именем пути. Имя пути показывает местоположениефайла или справочника и обеспечивает направление поиска его. Существует 2 типаимени пути: полное и родственное.Полное имя пути
Полноеимя пути (иногда называемое абсолютным именем пути) дает направление, котороеначинается в справочнике root ипоказывает путь далее по уникальной последовательности справочников кконкретному справочнику или файлу. Вы можете использовать полное имя пути дляпоиска любого файла или справочника в системе UNIX.
Так какполное имя пути всегда начинается со справочника root, то это имя начинается с символа косая черта (/).Последнее имя в полном имени пути может быть либо именем файла либо именемсправочника. Все другие имена пути должны быть справочниками.
Чтобыпонять как полное имя пути строится, обратитесь к следующему примеру.Предположим, что вы работаете в справочнике startship, расположенном в /home. Вы задаете команду pwd и система печатает полное имя путивашего рабочего справочника:
/home/startship
/ — этокорневой справочник (root);
home — системныйсправочник, расположенный на один уровень ниже справочника root;
/ — разделяет имена справочников root иstartship;
startship — текущий рабочий справочник.
Родственное имя пути
Родственноеимя пути дает направления, которые начинаются в вашем текущем рабочемсправочнике и ведут вас вверх или вниз через серию справочников к конкретномуфайлу или справочнику. Двигаясь вниз из текущего справочника, вы можетеполучить доступ к своему файлу или справочнику. Двигаясь вверх из текущегокаталога, вы пройдете через родительские справочники к родителю всех системныхсправочников, т.е. к root.
Родственноеимя пути начинается с имени справочника или файла.
Однаточка (.) означает текущий справочник, две точки (..) — справочник,непосредственно находящийся выше текущего справочника в иерархии файловойсистемы. Справочник, представленный двумя точками, называется родительским длясправочника, обозначенного одной точкой (вашего текущего справочника).
Например,вы находитесь в справочнике startship, который содержит справочники draft, letters и bin и файл mbox.Родственным именем пути для каждого из них является просто его имя.
Справочникdraft, принадлежащий справочнику startship, содержит файлы outline и table. Родственное имя пути от startship к файлу outline:
draft/outline
Обратитевнимание, что косая черта в этом имени пути разделяет имя справочника draft и имя файла outline. Здесь наклонная черта показывает, что outline является подчиненным справочнику draft, т.е. draft является родителем outline.
Чтобыподняться к родителю вашего текущего справочника, вы можете ввести две точки(..). Это означает, что если вы находитесь в справочнике draft, то… является именем пути к startship, и ../… является именем пути кродительскому справочнику для startship, т.е. к home.
Изсправочника draft вы также можете проследить путь кфайлу sanders, указав имя пути ../letters/sanders. Две точки (..) приводит вас к starship. Затем имена letters и sanders ведут вас вниз через справочник letters к файлу sanders.
Правила именования справочников и файлов
Выможете давать справочникам или файлам любые имена в соответствии со следующимиправилами:
допустимывсе символы, за исключением /;
некоторыеимена лучше не использовать, такие как пробел, табуляция и следующие:? "#$^ ();[]|\*@'~&. Если вы воспользуетесь символами пробел илитабуляция в имени файла или справочника, то вы должны заключить имя в двойныекавычки в командной строке;
избегайтеиспользования знаков + — или . в качестве первого символа в имени файла;
система UNIX различает большие и маленькие буквы.Например, система предполагает, что справочник (или файл) названный draft отличается от DRAFT.
Организация справочника
В этомразделе описываются 4 системные команды, позволяющие вам организовывать ииспользовать структуру справочника:
mkdir — создать новый справочник или подсправочник в вашем текущем справочнике;
ls — напечатать список имен всех подсправочников и файлов в справочнике;
cd — изменитьваше местоположение в файловой системе, т.е. перейти из одного справочника вдругой;
rmdir -удалитьпустой справочник. Эти команды могут использовать либо полное имя пути, либородственное. Две команды могут применяться без имени пути.
Командаmkdir— создать справочник
Рекомендуетсясоздавать подсправочники в вашем собственном справочнике в соответствии слогической схемой, которая будет облегчать восстановление информации вашихфайлов. Если вы поместите все файлы, относящиеся к одной теме, в одинсправочник, то вы будете знать, где их затем найти. Для создания справочникавоспользуйтесь командой mkdir.
Синтаксискоманды:
mkdir имясправочника(ов)
Например,подсправочник draft создается при помощи следующейкоманды, выдаваемой из справочника home (/home/startship): $ mkdir draft
Пользовательможет создать сразу несколько подсправочников одновременно, перечислив их всехв одной командной строке:
$ mkdir draft letters bin
Выможете перейти к подсправочнику и в нем построить дополнительныеподсправочники.
Командаls— напечатать содержимое справочника
Всесправочники в файловой системе имеют информацию о содержащихся в них файлах исправочниках, такую как: имя, размер и дата последней модификации. Вы можетеполучить эту информацию о вашем текущем справочнике и других системныхсправочниках, задав команду ls.
Команда ls перечисляет имена всех файлов иподсправочников в указанном справочнике. Если вы не укажете справочник, токоманда ls напечатает информацию о файлах исправочниках в вашем текущем справочнике.
Обратимсяк примеру. Предположим, что вы зарегистрировались в системе UNIX под именем startship и задали команду pwd. Система напечатает имя пути /home/startship. Чтобы отобразить имена файлов исправочников в этом текущем справочнике, введите команду ls и нажмите клавишу . После того, как вы выполнитепоследовательность этих команд, экран будет выглядеть следующим образом:
$ pwd
/home/ startship
$ ls
bin
draft
letters
list
mbox
$
Обратитевнимание, что система выдает перечень справочников в алфавитном порядке. Еслипервым символом имени файла или справочника будет цифра или большая буква, тооно будет напечатано первым.
Чтобынапечатать имена файлов и подсправочников в справочнике, отличном от текущегобез перехода из текущего справочника, вы должны указать имя справочника.
Синтаксискоманды:
lsимя пути
Имя путиможет быть либо полным именем пути требуемого справочника, либо родственным. Например,вы можете получить содержание справочника draft, когда вы работаете в справочнике startship, если введете команду ls draft. Экран терминала будет выглядеть следующим образом:
$ls draft
Outline
table
$
В этомпримере draft является родственным именем пути отродителя (starship) к подчиненному справочнику (draft).
Вы такжеможете использовать родственное имя пути для печати содержимого родительскогосправочника в то время, когда вы находитесь в подчиненном справочнике. Дветочки (..) являются самым простым способом выполнения этой функции. Например,следующая командная строка указывает родственное имя пути от справочника startship к home:
$ Is .. jmrs
mary2 startship
$
Выполучите тот же результат, если зададите полное имя пути от root к home:
ls /home
Выможете распечатать содержимое любого системного справочника, к которому имеетеправо доступа, выполнив команду ls сполным или родственным именем пути.
Команда ls особенно полезна, если вы имеетемного файлов и пытаетесь определить, существует ли определенный файл в вашемтекущем справочнике. Например, вы находитесь в справочнике draft и хотите определить, есть ли в немфайлы outline и notes. Задайте команду Is следующим образом:
$ ls outline notes
outline
notes: No such file or directory
$
Системасообщит, что файл outline существуетв этом справочнике, а вот файл notesне найден.
Команда Is не распечатывает содержимое файла.Для этих целей воспользуйтесь командами cat, pg, pr.
Частоиспользуемые ключи команды ls
Команда ls может содержать ключи, которыеперечисляют специфичные атрибуты файла или подсправочника. Чаще всегоиспользуются ключи -а и -l.
1.Перечислить все файлы в справочнике.
Именанекоторых файлов в вашем собственном справочнике начинаются с точки (например,.profile). Когда имя файла начинается сточки, он не включается в список, распечатываемый командой Is. Чтобы распечатать такие файлы,введите команду Is с ключом -а..
Например,чтобы распечатать информацию о всех файлах в вашем текущем справочнике (starship), включая и файлы, имя которыхначинается с точки, введите команду Is -а и нажмите клавишу .
2.Распечататьсодержание в укороченном формате.
Ключи -Си -F команды ls используются достаточно часто. Вместе эти ключираспечатывают подсправочники и файлы справочников и помечают исполняемые файлысимволом *, справочники — символом /, символическую связь (каналы) — символом@.
Например,вы можете распечатать информацию о всех файлах вашего рабочего справочника startship, выполнив команду:
3.Распечататьсодержание в расширенном формате.
Возможно,более информативным ключом команды ls является ключ -1, который отображает содержание справочника врасширенном формате. Этот формат включает в себя: режим, число связей,владелец, группа, размер в байтах и время последней модификации каждого файла.Предположим, вы задали команду Is -1,находясь в справочнике startship:
Первая выводнаястрока (total 30) показывает объем дисковогопространства в байтах. Последующие строки дают представление о справочниках ифайлах в справочнике startship. Первый символ в каждой строке (d, -, l, b или с) говорит о типе файла:
d = справочник
— = обыкновенныйфайл
1 =символическая связь (канал)
b = специальныйблочный файл
с =специальный символьный файл
Такимобразом на экране вы можете видеть, что справочник startship содержит три справочника и дваобычных файла.
Следующиенесколько символов, которые являются либо буквами, либо дефисами,идентифицируют право на чтение и использование файла или справочника.
Далееследует цифра — счетчик связей. Для справочника этот счетчик показывает числосправочников, расположенных под ним, плюс два (для самого справочника исправочника-родителя).
Следующимявляется регистрационное имя владельца файла (в данном случае startship), и за ним — групповое имя файла илисправочника (project).
Следующеечисло показывает длину файла или справочника в байтах. Месяц, день и времяпоследней модификации файла — в предпоследней колонке. В последней колонкепредставлено имя справочника или файла.
Командаcd— изменить текущий справочник
Сразу жепосле регистрации в системе UNIX,вы попадаете в ваш собственный справочник. Пока вы будете работать в нем, онбудет вашим текущим справочником. С помощью команды cd вы сможете работать в другом справочнике.
Синтаксискоманды:
cdимя-пути-нового-справочника
Любоедопустимое имя пути (полное или родственное) может использоваться в качествеаргумента команды cd… Если вы неукажете имя пути, то команда переместит вас в ваш собственный справочник.Справочник, в который вы перешли, становится вашим текущим справочником.
Например,чтобы перейти из справочника startship в подчиненный draft,введите команду cd draft и нажмите клавишу RETURN. После получения подсказки вы можетепроверить ваше новое местоположение, введя команду pwd.
Теперь,находясь в справочнике draft,вы можете создать подсправочники в нем, задав команду mkdir, и новые файлы, используя редактор ed или vi.
Нетнеобходимости находиться в справочнике draft, чтобы получить доступ к файлам, расположенных в нем.Вы можете получить доступ к ним из любого справочника, указывая полное илиродственное имя пути для этого.
Вы такжеможете использовать полное имя пути в команде cd. Например, чтобы перейти из справочника draft в справочник letters, введите:
cd /home/startship/letters
Так как letters и draft являются подчиненными справочнику srartship, то вы можете использоватьродственное имя пути ../lettersв команде cd. Две точки (..) перемещают вас всправочник startship и /letters перемещает вас в letters.
Итак,команда cd изменяет ваш рабочий справочник.Аргументом команды cd является новоеимя справочника. Если аргумент отсутствует, команда cd помещает вас в ваш собственный справочник.
Когда shell помещает вас в указанный справочник,то возвращается подсказка $. Чтобы получить доступ к справочнику, который неявляется вашим рабочим справочником, вы должны указать полное или родственноеимя пути в командной строке.
Командаrmdir— удалить справочник
Если вамбольше не нужен справочник, вы можете удалить его с помощью команды rmdir.
Синтаксискоманды:
rmdirимя(имена) справочника(ов)
Выможете указать более одного имени справочников в командной строке.
Командойrmdir вы не можете удалить справочник,если вы не являетесь его владельцем или он не пустой. Если вы хотите удалитьфайл из справочника другого пользователя, то владелец должен дать вам право назапись для родительского справочника этого файла.
Если выпопытаетесь удалить справочник, в котором содержатся подсправочники и файлы, токоманда rmdir напечатает сообщение:
имя-справочникаnot empty
Например,предположим, что вы имеете справочник memos, который содержит один подсправочник: tech и два файла june.30 и july.31. Если вы попытаетесь удалитьсправочник memos, то получите сообщение:
$ rmdir memosrmdir: memos not empty
$
Чтобыудалить справочник memos, вы должнысначала удалить его содержимое: подсправочник tech и файлы june.30 и july.31. Удалив содержимое справочника memos, можете удалить и его. Однакосначала переместитесь в родительский справочник (ваш собственный). Команда rmdir не отработает, если вы будетенаходиться в том же справочнике, который удаляете. Из своего собственногосправочника задайте команду:
rmdir memos
Еслисправочник memos пуст, то эта команда его удалит ивозвратит вам подсказку.
Доступк файлу и работа с ним
В этомподразделе описываются несколько команд системы UNIX, которые осуществляют доступ к файлу и производятобработку его в структуре файловой системы. Команды разделены на две группы:основные и advanced.
Основныекоманды являются фундаментальными в использовании файловой системы; advanced команды предполагают сложную техникуобработки информации при работе с файлами.Основные команды
В этомподразделе описываются команды системы UNIX, необходимые для доступа к файлам и для ихиспользования.
cat — Печатаетсодержимое указанного файла на терминал
pg — Печатаетсодержимое указанного файла на терминал порциями или страницами
рг — Печатает частично отформатированную версию указанного файла на терминал
ср — Создаеткопию существующего файла
mv — Перемещает или удаляет файлы
rm — Удаляет файл
wc — Распечатывает информацию о числестрок, слов и символов в файле
chmod — Изменяетрежим доступа к файлу (или справочнику)
Командыcat, pg, рг — распечатать содержимое файла
Всистеме UNIX существует три команды дляраспечатки содержимого файлов: cat, pg, рг. Команда cat выводит содержимое файла на экрантерминала или, если вы укажете, в другой файл или новую команду.
Команда pg особенно полезна, если вы хотитепрочитать содержимое большого файла, т.к. она отображает текст файлапостранично.
Командарг форматирует указанные файлы и отображает на терминал или направляет вывод напечать.
Командаcat
Команда cat отображает содержимое файла илифайлов. Например, предположим, вы находитесь в справочнике letters и вы хотите отобразить содержимоефайла Johnson. Введите команду cat Johnson и на экране появится следующая информация:
$ cat johnson March 5, 1986
Mr. Ron Johnson Layton Printing 52 Hudson Street New York, N.Y.
Dear Mr. Johnson:
I enjoyed with you this morning
about your company's plans to
your business.
Enclosed please find
the material you requested
about AB&C's line of computers
and office automation software.
If I can be of furtther assistance to you, please don't besitate to call.
Yours truly,
John Home
$
Чтобыотобразить содержимое двух или более файлов, перечислите имена этих файлов вкомандной строке. Например, чтобы распечатать содержимое файлов Johnson и sanders, введите команду:
$ cat Johnson sanders
Команда cat прочитает файлы Johnson и sanders и распечатает их содержимое на терминале.
Синтаксискоманды:
catключиимя-файла(ов)
Еслиуказанный файл не существует или его нельзя прочитать, на экране появляетсяследующее сообщение:
cannot open имя-файла
Командаpg
Команда pg позволяет вам распечатыватьсодержимое файла(ов) на терминал. После того, как pg отобразит страницу текста, она напечатает подсказку«двоеточие» (:), которая служит сигналом ввода вашей инструкции.Возможной инструкцией может быть запрос вывода следующей страницы содержимогофайла, либо запрос на поиск указанного символа по образцу.
КомандаФункция
h — Помощь. — Распечатывает список допустимых инструкцийкоманды pg
q или Q — Прекращает режим команды pg
— Отображает следующую страницутекста
l — Отображаетследующую строку текста
d или ^d — Отображает дополнительную половинустраницы текста
или ^l — Вновь отображает текущую страницу текста
f — Пропускает одну страницу текста ираспечатывает следующую за ней
n — Начинает распечатывать следующийуказанный в командной строке файл
р — Отображаетпредыдущий указанный в командной строке файл
s — Отображает последнюю страницутекста текущего файла
/pattern — Осуществляет поиск впередуказанного шаблона символов
?pattern — Осуществляет поиск назад указанногошаблона символов
Примечание.Некоторые команды могут быть введены с цифрой впереди. Например:
+1 — отображает следующую страницу;
1 — отображает предыдущуюстраницу;
1 — отображает первую страницутекста.
Команда pg особенно полезна, если вы читаетебольшой файл или серию файлов, т.к. пауза после каждой страницы дает возможностьдля анализа информации. Размер отображаемой страницы зависит от типа терминала.Например, терминал способен отображать 24 строки; значит страница текстаопределяется 23 строки плюс одна строка для двоеточия.
Еслифайл имеет менее 23 строки, то длина страницы будет равна числу строк в файлеплюс одна строка (для двоеточия).
Синтаксискоманды:
pgимя-файла(ов)
Например,чтобы отобразить содержимое файла outline из справочника draft, введите команду:
pg outline
Перваястраница текста появится на экране. Так как в файле больше строк, чемпоместилось на одной странице, то внизу экрана появится двоеточие. Когда выбудете готовы читать текст дальше, нажмите клавишу и pgнапечатает следующую страницу текста.
Когдавесь файл будет прочитан, в последней строке появится:
(EOF):
Подсказка:(двоеточие) предлагает вам ввести новую команду.
Если выв ответ на подсказку: нажмете клавишу , то вновь появитсяподсказка. Вы можете воспользоваться одной из ранее перечисленных допустимыхкоманд.
Успешное выполнение команды pg зависит от типа терминала,который вы используете. Это связано с тем, что программа pg достаточно гибкая иможет быть запущена на различных терминалах; то, как она запускается, зависитот конкретного типа терминала. Указав тип терминала, вы говорите команде:
сколькострок печатать;
сколькоколонок печатать;
какочистить экран;
каквысветить подсказку или другие слова;
какстереть текущую строку.
Чтобыопределить тип терминала, присвойте код вашего терминала переменной TERM в файле.profile.
Вкоманде pg могут применяться все допустимые ключи.
Командарг
Команда рг используется для форматирования и печатисодержимого файла. Она форматирует заголовки, количество страниц и печатаетфайл на экране терминала.
Вы можете с помощью ключа задать распечатку файла напострочно-печатающее устройство или направить вывод в другой файл.
Если вы не выберете ни один из допустимых ключей, то командарг сформирует вывод в одну колонку, страница будет содержать 66 строк и текстубудет предшествовать короткий заголовок. Заголовок состоит из 5 строк: двепустые строки, строка, содержащая дату, время, имя файла и номер страницы идалее две пустые строки.
Команда рг часто используется с командой lр для получениякопии текста на бумаге в том виде, в каком он был введен в файл.
Например, чтобы проанализировать содержимое файла johnson,введите команду:
$pr johnson
Пустые строки после последней строки символов в файле ргдобавляет к выводу, так что каждая страница содержит в общем 66 строк. Если выработаете с видеотерминалом, который имеет 24 строки, то все 66 строкотформатированного текста без пауз распечатаются на экране. Это означает, чтопервые 42 строки невозможно будет прочитать, т.к. вы не можете вернуть экранили два назад.
В этомслучае воспользуйтесь:
^s — для прерывания потока выводимого на терминал
и
^q — для продолжения вывода на экран.
Командаср — сделать копию файла
Приработе с системой UNIX у вас можетпоявиться необходимость сделать копию файла. Команда ср полностью копируетсодержимое одного файла в другой. Также она позволяет вам скопировать один илиболее файлов из одного справочника в другой, оставив оригинал файла на прежнемместе.
Чтобыскопировать файл outline в файл new.outline в справочнике draft, введите команду: ср outline new.outline.Когда система скопирует файл, то вернет подсказку. Чтобы проверитьсуществование нового файла, введите команду:
ls
Этакоманда перечислит имена всех файлов и справочников в текущем справочнике (вданном случае в справочнике draft).Экран будет выглядеть следующим образом:
$ ср outlinenew.outline
$ls
new.outline
outline
table
$
Система UNIX не позволяет иметь в одномсправочнике два файла с одним именем. Если бы файл new.outlineуже существовал в этом справочнике, то он был бы заменен на копию файла outline, предыдущая версия файла new.outline будет удалена.
Если выпопытаетесь скопировать файл outline в другой файл с тем же именем в том жесправочнике, то система сообщит вам, что имена файлов идентичны и возвратит вамподсказку.
Если вы затем проверите содержание справочника, чтобыопределить сколько копий файла outline существует, то вы получите следующийэкран:
$ ср outlinenew.outline
cp: outline and outline are identical
$ls
outline
table
$
Система UNIX разрешает иметь файлы с одинаковымиименами в разных справочниках. Например, вы можете скопировать файл outline из справочника draft в файл outline в справочнике letters. Если вы находитесь в справочнике draft, то сможете воспользоваться одной изперечисленных ниже 4-х командных строк. В первых двух строках вы указываете имянового файла при выполнении копирования.
ср outline/home/startship/letters/outline
(указанополное имя пути)
ср outline../letters/outline
(указанородственное имя пути)
Однакосистема UNIX не требует, чтобы указывали новоеимя файла. Если вы не укажите имя нового файла в командной строке, то ср дастновому файлу то же имя, которое имеет оригинальный файл. В этом случае можетезадать команду в одном из следующих видов:
ср outline /home/startship/letters
(указанополное имя пути)
ср outline ../letters
(указанородственное имя пути)
Если выхотите дать другое имя новому файлу, то обязательно укажите это имя.
Например,чтобы скопировать файл outline(справочник draft) в файл с именем outlin.vers2 в справочник letters, нужно задать одну из следующих команд:
ср outlinehome/startship/letters/outlin.vers2
(указанополное имя пути)
срoutline ../letters/outlin.vers2
(указанородственное имя пути)
Синтаксискоманды:
ср ключиимя-файла1 имя-фaйлa2
ср ключиимя-файла(ов) cnpaвочник
Командаmv— переименование файла
Команда mv позволяет вам переименовать файл втом же справочнике или переместить его из одного справочника в другой. Когдаперемещаете файл в другой справочник, то можете переименовать его или оставитьпрежнее имя.
Синтаксискоманды:
mvимя-файла1 имя-файла2
Команда mv изменяет имя-файла 1 на имя-файла2 иудаляет файл 1. Имя-файла 1 и имя-файла 2 могут быть любыми допустимымиименами, включая имя пути. Имя-файла2 может бытьсправочником.
Например,если вы находитесь в справочнике draftи хотите переименовать файл tableна new.table, введите команду:
mv table new.table
Есликоманда выполнится успешно, то на экране появится подсказка. Проверьте, чтофайл new.table существует. Экран будет выглядеть следующим образом:
$ mv table new.table
$ls
outline
new.table
$
Чтобыпереписать файл в другой справочник без изменения имени, введите команду:
mv имя-файла(ов) cnpaвочник
Например,вы хотите переписать файл tableиз текущего справочника draft(который имеет полное имя пути /home/startship/draft) в файл с тем же именем в справочник letters (который имеет родственное имя путииз draft ../letters и полное имя пути /home/startship/letters). Для этого можете воспользоватьсяодной из следующих командных строк:
mv table /home/startship/letters
mv table /home/startship/letters/table
mv table ../letters
mv table… /letters/table
mv /home/startship/draft/ table /home/startship/letters
Теперь,предположим, вы хотите переименовать файл table в table2и переписать в справочник letters.Для этого воспользуйтесь одной из следующих командных строк:
mv table /home/startship/letters/table2
mv table ../letters/table2
Когда выпереписываете файл с именем имя-файла1 в имя-файла2 и файл с именем имя-файла2уже существует, команда mvперезапишет новую версию файла. Старая версия файла удаляется.
Командаrm— удалить файл
Чтобыудалить файл, введите следующую команду:
rmфaйл(ы)
Выможете удалить несколько файлов, указав их имена в командной строке. В этомслучае команда будет выглядеть следующим образом:
rm файл1 файл2файл3…
Чтобыпроверить, успешно ли выполнилась команда, выполните команду ls. Например, предположим, что в вашемсправочнике находятся файлы outlineи table. Вы хотите удалить оба файла. Есликоманда rm выполнится успешно, то справочникбудет пустой. Проверьте, задав команду ls. Экран будет выглядеть следующим образом:
$ rm outline table
$ls
$
Подсказкаговорит о том, что файлы outlineи table удалены.
Командаwc— подсчет строк, слов и символов
Спомощью команды wc вы можетеподсчитать число строк, слов и символов в указанном файле. Если указано болееодного файла в командной строке, то программа we осуществляет подсчет строк, слов и символов в каждом файле изатем выдает общее число. Вы можете с помощью ключей указать либо подсчеттолько строк, или только слов, или символов.
Синтаксискоманды:
wcимя-фaйлa
Системаотвечает строкой в следующем формате:
1 w с файл
где 1 — числострок в файле;
w — число слов вфайле;
с — число символов в файле.
Например,чтобы подсчитать число строк, слов и символов в файле johnson, находящегося в текущем справочнике, введите команду:
$ we johnson24 66 406 johnson
$
Системаотвечает, что в файле Johnson24 строки, 66 слов и 406 символов.
Чтобыподсчитать число строк, слов и символов в нескольких файлах, используйтеследующий формат:
we файл1файл2
Системаотвечает следующим образом:
1 w с файл1
1 w с файл2
1 w с total
Числострок, слов и символов для файл1 и файл2 отображается на отдельных строках. Напоследней строке отображается общее число строк, слов и символов в двух файлах.
Например,подсчитаем число строк, слов и символов в файлах johnson и sandersв текущем справочнике. Экран будет выглядеть следующим образом:
$ wc johnson sanders 24 66 406 Johnson
28 92 559 sanders
29 52 158 965 total
$
Последняястрока показывает, что файлы Johnsonи sanders вместе имеют 52 строки, 158 слов и965 символов.
Чтобыполучить только число строк, или число слов, или число символов, выберите одиниз соответствующих форматов командной строки:
wc -1файл (число строк)
wc -w файл (число слов)
wc -сфайл (число символов)
Например,если вы используете ключ -1, то система напечатает только число строк в файле sanders:
$ wc –l sanders
28 sanders
$
Командаchmod— изменить статус файла
Команда chmod позволяет вам устанавливатьразрешение на чтение, запись и использование вашего файла. Так как операционнаясистема UNIX является многопользовательской, тообычно вы не работаете в одиночку в файловой системе. Пользователи системымогут любым путем обращаться к различным справочникам и читать файлы,принадлежащие другим пользователям до тех пор, пока есть разрешение на это.
Если выявляетесь владельцем файла, то можете решить, кто имеет право на чтение файла,запись в него и, если это программа, то выполнить ее. Вы также можетеограничить права доступа к справочнику. Когда вы предоставляете право доступа ксправочнику, это значит, что позволяете указывать пользователю команду cd и распечатывать содержимоесправочника с помощью команды ls.Чтобы указать право доступа, используются следующие символы:
r — разрешает пользователям системы читать файл или копировать его содержимое;
w -разрешает пользователямсистемы вносить изменения в файл или копировать его содержимое;
х-позволяет пользователям системы запускать файл на выполнение.
Чтобыуказать, кто из пользователей имеет эти права на доступ, используются следующиесимволы:
u — владелец файлаи справочника; g — член вашейгруппы; о -все пользователи системы.
Когда высоздаете файл или справочник, система автоматически предоставляет или непредоставляет право доступа вам, члену вашей группы или всем пользователямсистемы. Вы можете изменить это автоматическое действие по предоставлениюправа. Кроме того, вне зависимости от того, какие права вам предоставляются присоздании файла, вы как владелец файла или справочника можете воспользоватьсяключом внесения изменений.
Какопределить права
Вы можетеопределить права доступа к файлу или справочнику, воспользовавшись командой ls -1. Например, если вы находитесь всправочнике startship/bin, и введете команду ls -1, то получите следующую информацию:
$ ls -1
total 35
-rwxr-xr-x 1 startship project 9346 Nov 1 08:06 display
-rw-r-- r-- 1 startship project 6428 Dec 2 10:26 list drwxr-x--x 2startship project 32 Nov 8 15:32 tools $
В левойчасти экрана отображены права доступа для файлов display и list исправочника tools:
-rwxr-xr-x для файла display
-rw-r- -r — для файла list
drwxr-x--x для справочника tools
Первыйсимвол описывает тип файла (например, символ "-" говорит, что этообыкновенный файл, символ «d»- справочник). Дальнейшие девять символов описывают права доступа. Первые трисимвола из девяти устанавливают права доступа для владельца, вторые три — длягруппы, третьи — для всех пользователей. Каждый набор символов r,w,x показываеттекущие установленные права доступа для каждой категории пользователей. Есливместо символа стоит "-", то соответствующее право отсутствует.
Существуетдва ограничения. Случайно могут появиться буквы 1 или s в строке вместо г, w или х. Буква s представляетспециальное право на выполнение файла. Она появляется на том месте, где обычностоит буква r в наборах для владельца или для группы пользователей и этоозначает специальное право на выполнение файла. Она имеет значение только для программистов и системных программистов. Буква l указывает, чтоблокировка будет появляться при обращении к файлу. Это не означает, что файлзащищен.
Какизменить существующие права
Изменитьсуществующие права можно с помощью команды chmod. Синтаксис команды:
chmod кто+правафайл(ы)
или
chmod кто-правафайл(ы)
где
chmod -имяпрограммы; кто -одна их трех групп пользователей: u — владелец; g -группа; о — все пользователи;"+" или "-" -наличие или отсутствие права; право -одно изтрех прав: г -право на чтение; w-право на запись; х — право на выполнение; файл(ы) — имя файла(ов)(справочника); предполагается, что файл находится в текущем справочнике или выдолжны указать полное имя пути.
Примечание.Команда chmod не будет выполняться, если выпоставите пробел между «кто», символами "+","-" и«право».
Вследующих примерах приведены несколько способов использования команды chmod. Как владелец display вы можете читать файл, писать в негои запускать на выполнение файл. Вы можете защитить файл от случайногоизменения. Чтобы сделать это, введите следующую командную строку:
chmod u-w display
Послетого как получите подсказку, введите команду:
ls -l
чтобыпроверить, как изменились права. Экран будет выглядеть следующим образом:
$ chmod u-w display $ ls -l
total 35
-r-xr-xr-x 1 startship project 9346 Nov 1 08:06 display
-rw-r --r-- 1 startship project 6428 Dec 2 10:26 list
drwxr-x--x 2 startship project 32 Nov 8 15:32tools
$
Каквидите, изменилось право на внесение изменений в файл. Вы не сможете изменитьэтот файл, пока существует это право записи.
Теперьобратимся к другому примеру. Право на запись в файл display не разрешено вашей группе и всем пользователямсистемы. Однако им предоставлено право на чтение. Это означает, что они могуткопировать файл в свой собственный справочник и затем вносить в него изменения.Чтобы предотвратить эти действия, вы должны отменить право на чтение. Для этоговведите команду:
chmod go-r display
где g и о обозначают права для группы идля всех пользователей системы;
-г — запрещает читать или копировать файл. -
Проверьтерезультат и введите команду ls -1.Экран будет выглядеть следующим образом:
$ chmod go-r display $ ls -1
total 35
-rwx--x--x 1 startship project 9346 Nov 1 08:06 display
-rw-r--r--1 startship project 6428 Dec 2 10:26 list
drwxr-x--x 2 startship project 32 Nov 8 15:32 tools
$
Выможете использовать команду chmodдля предоставления или отрицания права для справочников, как и для файлов.
Например,вы предоставили право на чтение справочника себе (и), членам вашей группы (g) и всем пользователям системы.Каждый пользователь, имеющий доступ к системе, будет иметь право читать именафайлов, содержащихся в этом справочнике, задав команду ls -1. Аналогично, предоставление права на запись позволяетпользователям создавать новые файлы в справочнике и удалять в нем существующиефайлы. Предоставленное право на выполнение в справочнике позволяет обозначеннымпользователям перемещаться в этот справочник (и делать его своим текущимсправочником) с помощью команды cd.
Альтернативныйметод
Существуетдва метода, с помощью которых может быть выполнена команда chmod. Способ, описанный выше, в которомсимволы r, w и х используются для указания права,называется символическим методом.
Альтернативнымметодом является восьмеричный метод. Его формат требует от вас указать права сиспользованием трех восьмеричных цифр (от 0 до 7).
Дополнительныекоманды
В этомпункте описаны три команды, которые могут вам пригодиться при работе с файлами:chown, id, groups. Если вывладелец файла, ваше регистрационное имя размещается в категории owner. Команда chown позволяет владельцу файла изменить собственный ID на любой другой. Например, если вывведете команду:
ls -l display
наэкране появится информация:
-r-xr-xr-x l owner group 9346 Nov 1 08:06 display
Чтобыизменить ваш ID на чей-либо другой (например, sara) вы должны ввести:
chown sara display
Если вы введете:
ls -l display
наэкране появится сообщение:
-r-xr-xr-x l sara group 9346 Nov 1 08:06 display
Если вывведете команду chown и на экранепоявится сообщение об ошибке, это будет указывать на то, что системныйпрограммист не предусмотрел эту возможность при установке системы. Если вывведете:
id
тосистема отобразит ID пользователей иваш действительный групповой ID (gid). В зависимости от начальнойустановки системы вы можете принадлежать более чем к одной группе. Чтобыопределить, членом какой группы вы являетесь, введите:
groups
Наэкране появится список тех групп, членом которой вы являетесь. Таким образом,вы имеете доступ к файлам тех пользователей, чьи групповые ID совпадают с вашими групповыми ID.
Так каквы хорошо знакомы с этими командами, вам необходимо получить более углубленныезнания по технике обработки информации. В этом пункте представим три команды:
diff- найтиразличия между двумя файлами;
grep — поиск вфайле по шаблону;
sort — сортировкаи слияние файлов.
Командаdiff
Команда diff обнаруживает и сообщает обо всехразличиях между двумя файлами и говорит вам как изменить первый файл, чтобы онбыл дубликатом второго.
Синтаксискоманды:
diff файл_1фaйл_2
Еслифайл_1 и файл_2 идентичны, то система возвращает подсказку. Если есть различиямежду ними, то команда diffинструктирует вас, как изменить первый файл (с помощью редактора ed), чтобы он соответствовал второмуфайлу. Система UNIX помечаетстроки в файл_1 (которые будут изменены) символом (больше).
Например,вы хотите найти различия между файлами johnson и mcdonough. Файл mcdonough содержит тот же текст письма, что и johnson, но с соответствующими изменениямидля различных получателей. Команда diff идентифицирует эти изменения следующим образом:
3, 6сЗ,6
—
> Mr. J.J.McDonough
> Ubu Press
> 37 Chico Place
> Springfield, N.J.
9c9
----
> Dear Mr. McDonough:
Перваястрока команды diff:
3, 6сЗ,6
Этоозначает, что если вы хотите, чтобы johnson соответствовал mcdonough, вы должны изменить (с) строки с 3-й по 6-ю в файле Johnson на строки с 3-й по 6-ю из файла mcdonough. Команда diff затем отобразит оба набора строк. Если вы выполнитеэти изменения (с помощью таких редакторов как ed или vi),файл johnson будет идентичен файлу mcdonough. Помните, что команда diff ищет различия только между двумяуказанными файлами.
В первойвыводной строке команды diffмогут появиться следующие буквы:
а — добавить; с — изменить; d — удалить.
Цифры,приведенные вместе с буквой, указывают на строки, которые должны бытьмодифицированы.
Командаgreр
Выможете выдать системе UNIXинструкцию поиска в файле указанного слова, фразы, группы символов с помощьюкоманды grep. Поиск осуществляется по шаблону.
Синтаксискоманды:
grep шаблонфайл(ы)
Например,чтобы отыскать любую строку, содержащую слово automation в файле johnson, введите:
grep automation johnson Системаответит:
$ grep automation johnson and office automation software
$
Выводсостоит из всех строк в файле Johnson,которые содержат шаблон, указанный вами.
Еслишаблон содержит много слов или любых символов, которые имеют специальноезначение для системы UNIX(например, $, |, *,? и т.д.) вводимый шаблон должен быть заключен в кавычки.Например, вы хотите найти строки, содержащие шаблон office automation. Ваша командная строка и ответсистемы будут выглядеть следующим образом;
$ grep 'office automation' johnson and office automationsoftware
$
Но есливы не знаете, какое письмо содержит шаблон office automation, письмо johnson или sanders,можете ввести команду в следующем виде:
$ grep 'office automation' johnson sanders johnson:and officeautomation software
$
Выводнаястрока говорит вам, что шаблон office automation найдентолько в файле Johnson.
Дополнительнок команде grep система UNIX обеспечивает разновидности этой команды — это командыegrep и fgerp с несколькими ключами, облегчающими поиск.
Командаsort
Системаобеспечивает эффективное средство для сортировки и слияния файлов. Синтаксискоманды:
sortфaйл(ы)
Этакоманда приводит к тому, что строки в указанном файле будут отсортированы ислиты в следующем порядке:
строки,начинающиеся с цифры, будут отсортированы по цифрам и перечислены после строк,начинающихся с буквы;
строки,начинающиеся с большой буквы, перечисляются до строк, начинающихся с маленькойбуквы;
строки,начинающиеся с таких символов, как "%", "*" сортируются наоснове символьного представления ASCII.
Например,вы имеете 2 файла group 1 и group2, каждый из которых содержитперечень имен. Вы хотите отсортировать каждый список по алфавиту и затемобъединить два списка в один. Вначале отобразите содержание файлов, выполнивкоманду cat для каждого файла. Экран будетвыглядеть следующим образом:
$cat group 1Smith, Allyn
Jones, Barbara
Cook, Karen
Moore, Peter
Wolf, Robert
$ cat group2 Frank, H. Jay
Nelson, James
West, Donna
Hill, Chales
Morgan Kristina
$
Вместотого, чтобы печатать эти два файла индивидуально, вы можете сделать это в однойкомандной строке. Если вы введете команду:
$ cat group 1 group2 результат будет такой же.
Теперьотсортируйте и слейте эти два файла, выполнив команду sort. Результат выполнения команды sort будет распечатан на экранетерминала, если вы не укажете иначе.
$ cat group 1 group2
Cook, Karen
Frank, H. Jay
Hill, Chales
Jones, Barbara
Moore, Peter
Morgan, Kristina Nelson, James
Smith, Allyn
West, Donna
Wolf, Robert
$
Дополнительнок комбинированию списков (как в примере), команда sort может перестанавливать строки и части строк(называемые полями) в соответствии с другими спецификациями, которые выназначили в командной строке. Возможными спецификациями являются complex и beyond.