- •Задорожный а.Ф., Колмогорова е.В. Основы операционной системы unix
- •Введение Принципы работы пользователя в unix.
- •Лабораторная работа №1 Файловая система и основные команды работы с файлами unix Цель работы.
- •Основы файловой системы unix.
- •Стандартные каталоги файловой системы unix.
- •Основные команды управления файлами.
- •Визуальная оболочка Midnight Commander.
- •Задания.
- •Содержание отчета:
- •Наиболее распространенные утилиты unix
- •Задания:
- •Содержание отчета:
- •Лабораторная работа №3 . Командный интерпретатор shell. Цель работы.
- •Задание
- •Содержание отчета:
- •Лабораторная работа №4. Процессы в unix. Цель работы.
- •Задания.
- •Содержание отчета:
Стандартные каталоги файловой системы unix.
Использование общепринятых имен наиболее значимых файлов и структуры каталогов существенно облегчают настройку, администрирование системы, а также переносимость системных и прикладных программ. В большинстве UNIX-систем существует базовый набор каталогов, имя и общее назначение каждого из которых не зависит от конкретной системы. Рассмотрим важнейшие из системных каталогов.
Каталог |
Назначение |
/ (корневой) |
Основа файловой системы. Все остальные файлы и каталоги размещаются в корневом каталоге и его подкаталогах. |
/bin |
Исполняемые файлы основных команд и утилит |
/dev |
Специальные файлы устройств |
/etc |
Файлы конфигурации системы и прикладных программ; в ранних реализациях UNIX– также многие утилиты администрирования. |
/lib |
Библиотечные файлы, необходимые для компиляции и запуска большинства программ |
/sbin |
Исполняемые файлы команд и утилит системного администрирования |
/home или /u |
Область для домашних каталоговпользователей. Как правило, имя домашнего каталога пользователя совпадает с его регистрационным именем в системе. |
/tmp |
Область хранения временных файлов. |
/var |
Оперативная информация, сохраняемая в процессе исполнения системных и прикладных программ. |
/mnt |
Резервируется для монтирования (временного подключения) внешних файловых систем (сменные носители – CD-ROM, дискеты и т.п.) |
/usr |
Область каталогов сервисных подсистем и прикладных программ |
usr/lib |
Содержит библиотеки языков программирования |
/usr/doc |
Содержит документацию ОС Unix
|
/usr/local, /opt |
Обычно для установки дополнительного программного обеспечения, не связанного напрямую с системой |
/usr/man |
Содержит файлы диалогового руководства man |
usr/spool |
Содержит буферные файлы (например, генерируемые для заданий печати и пересылок по сети)
|
Каждому пользователю системы UNIXвыделяетсядомашний каталог– каталог, в котором пользователь располагает файлы, с которыми работает. Обычно пользователь имеет полные права на все файлы и каталоги, расположенные в его домашнем каталоге. Как правило, рядовые пользователи имеют права на запись только в своем домашнем каталоге.
Имя домашнего каталога обычно совпадает с регистрационным именем пользователя. Кроме того, к домашнему каталогу конкретного пользователя можно обращаться по сокращенному обозначению «~» (символ «тильда»).
При входе систему текущим для данного пользователя становится его домашний каталог.
Основные команды управления файлами.
Команды управления файлами подчиняются общим принципам построения команд в UNIX. Команда вводится в командной строке, состоит из одного или болееслов, разделенных пробелами. Первое слово задает собственно команду, остальные (если они присутствуют) являютсяпараметрамикоманды. Параметрами команд, в частности, могут быть имена файлов. Особым типом параметров являютсяключи – специальные символы, задающие или корректирующие действие команды. Как правило, ключ или комбинация ключей начинается с символа «-» («минус»). Большинство команд UNIX имеют следующий формат:
$ команда ключи параметры
Сначала идет имя команды, затем - ключи и параметры. Параметрами, как правило, являются имена файлов. Все ключи начинаются с дефиса. Например, приведенная ниже команда означает: "Выполнить команду Isс ключом-lдля файлаа.out":
$ ls -l а.out
Имена команд почти всегда приводятся строчными буквами; ключи обычно состоят из одной буквы (строчной или прописной). В отличие от многих других операционных систем, UNIX учитывает разницу между прописными и строчными буквами.
Если Вы используете два и более однобуквенных ключа, большинство команд позволяют объединять их. Например, две приведенные ниже команды идентичны:
$ ls -lg a.out
$ 1s -l -g a.out
Некоторые ключи требуют наличия параметра. В этом случае параметр дается после ключа, в этом случае последний нельзя объединять с другим ключом
Ввод команды завершается нажатием Enter. Различные командные интерпретаторы в различных реализацияхUNIXмогут включать дополнительные средства редактирования команд. Как правило, предусмотрено удаление символа перед курсором клавишей «Забой». Некоторые командные интерпретаторы (в частности,bash) позволяют вызвать в командную строку ранее введенные команды клавишами «вверх» и «вниз».
Как и в именах файлов, в написании команд различаются заглавные и строчные буквы.
При указании имен файлов в качестве параметров допускается использовать шаблоны (маски) имен, позволяющие одной командой обратиться более чем к одному файлу. В шаблонах (масках) могут указываться следующие специальные символы:
-
*
Означает любую последовательность символов, включая пустую
?
Означает любой одиночный символ
[…]
Означает любой из символов, заключенных в скобки; пара символов, разделенных знаком «-», сокращенно задает интервал символов.
Примеры шаблонов:
Пример шаблона |
Значение |
Соответ-ствует |
Не соответ-ствует |
*.с |
Все файлы, имена которых заканчиваются на «.с» |
test1.c a.c |
test1.C a.c.bak |
a?c |
Все файлы, имя которых начинается с «а», затем идет любой символ, затем окончание «с» |
abc a1c a.c |
abbc ac
|
test[0-9] |
Все файлы, имя которых состоит из слова «test» и одной цифры |
test0 test5 test9 |
test testa test1.c |
[ab]* |
Все файлы, имена которых начинаются на символ «а» или «b» |
alpha b52e b |
Alpha test
|
К основным командам управления файлами относятся команды перемещения по файловой системе, создания и удаления каталогов, копирования, переименования и перемещения файлов, управления атрибутами файлов и т.п.
Рассмотритм некоторые простые команды.
.
Список файлов
$ ls
Команда Isвыводит заголовки файлов из текущего каталога (названиеIsозначаетListSorted(сортированный список) - имена файлов упорядочиваются в алфавитном порядке).
При выполнении команды
$ ls/bin
вы получите список файлов каталога /bin, т. е. для получения списка файлов определенного каталога требуется выполнить командуIsс именем каталога в качестве аргумента. Если указать ключ -R, то вы получите рекурсивный список, т. е. список всех каталогов, входящих в текущий каталог, и последовательный список файлов, входящих в каждую директорию.
Если вы укажете в команде lsключ -1 , то получите расширенную информацию о файлах:
$ ls -1
drwxr-xr-x I serg users 70 Nov 4 10:18 documents
-rw-r—r-- 1 serg users 242 Nov 5 11:23 proba.txt permission linkx owner group eiza date
Каждая строка дает подробную информацию о файле. Первое поле длинного листинга используется для кода защиты. Код защиты состоит, как правило,,из 10 символов, причем первый определяет тип файла, а последующие 9 - право на доступ к нему. Кодирование файлов представлено в следующей таблице:
'Код |
Значение |
- |
Обычный файл |
D |
Файл каталога |
С |
Байториентированный специальный файл |
1 |
Символическая связь |
B |
Блокориентированный- специальный файл |
Р |
Коммуникационный файл(ПРО-файл) |
Ниже показаны некоторые типичные листинги, полученные по команде ls-1.
total 5
drwxr-xr-x 2 inter Other 1024 Aug 30 1993 Applications
drwxr-xr-x 2 inter Other 96 Nov 22 1993 Disks-etc
drwxr-xr-x 2 inter Other 1024 Jun 24 1993 Preferences
Irwxrwxnvx 1 inter Other 1024 Jun 24 1993 Shutdoun->
/usr/X11R6/Shutdown
-rw-r—r— 1 inter Other 15326 Jun 24 1993 ascii.c
Здесь:
drwxr-xr-x 2 inter Other 1024 Aug 30 1993 Applications
Имя файла
Дата модификации
Группа Размер файла в байтах
Владелец
Число связей
Привилегии всех остальных (можно читать и выполнять)
Привилегии группы(писать запрещено, можно читать и выполнять)
Привилегии владельца (можно читать, писать, выполнять)
Тип файла (d обозначает каталог)
Смена каталога
$ cd /bin
Система UNIXпозволяет сделать текущим любой каталог, к которому разрешен доступ. Вы можете изменить каталог с помощью команды cd (ChangeDirectory) с аргументом, например, /bin.
Показать текущий каталог
$ pwd
/home/inter
Система выводит на экран имя текущего каталога
Вывод содержимого файла
$ cat proba.txt
По этой команде на экран терминала будет выведено содержание файла proba.txt.
С помощью catможно распечатать избранные главы некоего документа или даже поместить их в отдельный файл применив вместо записи команды
$ cat сhapl chap3 chap4 chap7 > book
более изящный синтаксис:
$ cat chap[1347] > book
$ head, tail Посмотреть только начало (первые n строк) или конец (последние n строк) файла можно с пом ощью утилитhead(1)иtail(1),соответственно.
Создание ссылок
Команда Inпозволяет установить несколько имен для файла в дереве каталогов:
$ In /home/inter/shutdown /usr/XR6/Shutdown
По этой команде создается синоним для файла shutdownпод именемShutdownв каталоге /usr/X11R6. При распечатке оглавления каталога эта символическая связь обозначается стрелкой ->
Имена shutdownиShutdownстанут синонимами, так как будут указывать один и тот же файл. Запись в каталоге иногда называют связью с файлом, а число имен одного файла - числом связей с ними.Стремление иметь два имени для одного файла объясняется несколькими причинами. В данном случае пользователь желает иметь файл в его текущем каталоге.
Для этого вовсе не обязательно копировать системные программы в директорию пользователя, достаточно установить с ними символическую связь.
Следует отметить, что команда Inне создает файл. Создается лишь запись в каталоге; файл уже должен существовать. Создать файл можно командами ср,catи вообще любой командой, позволяющей перенаправлять свой выход.
Создание каталога
Для создания каталогов используется команда mkdir-makedirectory(создать каталог). При ее выполнении в новый каталог автоматически заносятся два элемента, имеющие имена "." и".."..Первое имя представляет собой сам каталог, второе - имя его родителя на более высоком уровне:
$ mkdir emacs.srcСоздает каталог с именемemacs.src, куда можно, например, поместить все исходные тексты свободно распространяемого популярного редактора дляUNIX, написанного на С.
Создать дополнительную связь с каталогом можно командой In,aуничтожить - командойrmdir. В любом случае требуются дополнительные привилегии.
Уничтожение файлов
Система, которая позволяет вам создавать файлы, не была бы полна без команды, которая позволяла бы вам их удалять. В системе UNIXэта команда называетсяrm:
$ rm proba.txt
По этой команде удаляется файл proba-txtиз текущего каталога. В каком-то смысле команда rm является противоположностью командеIn, потому что если удаляемый файл является ссылкой, то командаrmудалит имя файла из каталога, однако, если удаленная запись была последней связью с файлом, она удалит сам файл. Пусть, например, на рис.2 текущим каталогом является /bin. Тогда команда
$ rm myprog
удалит запись myprogиз каталога /bin. Сам файл, указываемый записью /bin/myprog, однако, останется, поскольку у него сохраняется еще связь /prog1, которая представляет тот же самый файл.
Рис. 2
Команда rm- весьма опасная команда, особенно для невнимательных привилегированных пользователей. Например, невинная на первый взгляд запись
$ rm -г *
молча и с большой скоростью удалит все файлы из текущего каталога и одновременно уничтожит все дерево ниже указанной точки, поэтому, естественно, вы должны быть предельно внимательны при употреблении команды rm.
Имеется один важный необязательный аргумент - ключ -i, который мы рекомендуем указывать при выполнении команды rm.
В том случае, когда используется аргумент -i, программа в диалоге запрашивает о том, действительно ли вы хотите удалить каждый из найденных для проведения операции файлов. Интерактивный режим полезно применять, когда некоторые "забавники" создают файлы, указывая в их именах символы, которые невозможно напечатать на клавиатуре терминала (как правило, из набора управляющих символов терминала). Если вы хотите удалить такие файлы, введите команду
$ rm -i *
и отвечайте yesпо отношению ко всем файлам, которые вы хотите удалить.
Уничтожение каталогов
Так же легко, как вы создаете каталоги с помощью команды mkdir, их можно уничтожить с помощью командыrmdir. Единственное предварительное условие при удалении каталогов - это отсутствие в них заранее записанных файлов. Если же все-таки будут иметься файлы в каталоге, который вы собираетесь удалить, эта операция закончится неуспешно. Для удаления, например, каталогаstefanнужно использовать команду
$ rmdir stefan причем находиться нужно в родительском по отношениюstefanкаталоге.
Команда успешно сработает, если в удаляемом каталоге отсутствуют файлы. В противном случае результат будет таков:
$ rmdir stefan
rmdir: /home/inter/stefannon-empy (не пустой)
$
Можно, конечно, воспользоваться командой
$ rm -r /stefan
но это уже вопрос техники применения команд.
Пересылка файлов
Команда move-mv(переслать) хоть и называется пересылкой, в пределах одного тома речь идет только о переименовании, поскольку сами данные перемещаться не должны. Если же речь идет о разных носителях, то данные действительно пересылаются из одного'места в другое:
$ mv /mydir/progl.c /otherdir/progl.c
Эта команда уничтожает запись о файле prog1-е в каталогеmydirи создает новую запись о файлеprog1.с в каталогеotherdir, не трогая самого файла, т. е. не изменяя его индексных дескрипторов и номеров соответствующих дисковых блоков, указывающих на его месторасположение.
С помощью команды mv можно переименовывать и каталоги, но только в том случае, если источник и приемник находятся на одном уровне иерархии, т. е. имеют общего родителя. Если mydir- каталог, то команда
$ mv mydir mynewdir
выполнит переименование каталога. В то же время команда
$ mv mydir .. /mynewdir
не будет выполнена.
Копирование файлов
Команда ср копирует файлы и отличается от mv тем, что вы можете скопировать оригинальный файл без опасения потерять уникальную информацию. Команда ср сохраняет файл-источник, в то время как mv уничтожает его:
$ ср /UAP/uniplex/termcap termcap.original.uniplex
Эта команда создает копию оригинального файла под другим именем в том же самом каталоге на тот случай, если вы вознамерились модифицировать оригинальный файл.
Поиск текста в файлах
$grep <образец> file
Утилиты поиска фрагментов текста в файлах. Могут использоваться в качестве фильтров в программных каналах.
Для поиска подстроки в файлах можно использовать самую простую из утилит fgrep(1)(fastgrep).
Если подстрока поиска содержит пробелы или знаки табуляции, ее необходимо заключить в кавычки. Если подстрока уже содержит кавычки, их надо экранировать, поместив символ 'V непосредственно перед кавычками:
Если вы хотите сделать поиск нечувствительным к заглавным/строчным символам, используйте ключ -у. Для поиска строк, не содержащих указанную подстроку, используется ключ -v.
Утилиты grep(1)иegrep(1)позволяют производить более сложный поиск, например, когда вы не уверены в написании искомого слова, или хотите найти слова, расположенные в определенных местах файла. В этом случае
Посмотреть только начало (первые n строк) или конец (последние n строк) файла можно с помощью утилит head(1)иtail(1),соответственно.
.
$sort [opt] file
Для сортировки строк файла используется утилита sort(1).
Опции:
-rсортирует в обратном порядке
-o<имя файла> сохраняет результат сортировки в выходном файле
-uвыводит повторяющие строки только один раз
-dигнорируются не буквы, цифры, пробелы (сортировка по алфавиту)
-fигнорируется регистр
-Mсортирует месяцы
-nпо числовому коду символа
+ <число> по указоному номеру поля
Например, для сортировки текста в алфавитном порядке необходимо ввести следующую команду:
$ sort-dfile>sorted_file
Вы можете указать номер слова строки, по которому необходимо произвести сортировку (точнее, номер поля записи; по умолчанию записью является строка, а поля разделены пробелами). Например, для сортировки строк файла file
Андрей Май
Борис Январь
Владимир Март
по месяцам, можно использовать команду $ sort-M+1fileв результате получим:
Борис Январь
Владимир Март
Андрей Май
Опция -Mопределяет сортировку по месяцам (не по алфавиту), опция +1 указывает, что сортировку необходимо проводить по второму полю каждой строки.
Поиск файла
find dir [opt]
Выполняет поиск файла в файловой системе UNIX, начиная с каталогаdir.Например, для вывода полного имени исполняемого файла командного интерпретатораBourneshelfвведите команду:
$ find / -name sh -print 2>/dev/null
/usr/bin/sh
/usr/xpg4/bin/sh
/sbin/sh
С помощью опции -nameуказывается имя искомого файла, а с помощью опции -print— действие (вывести полное имя).
С помощью find(1)можно производить поиск файлов по другим критериям, например, размеру, последнему времени модификации и т. д. Например, чтобы найти файлы с именемcore(образ процесса, создаваемый при неудачном его завершении и используемый в целях отладки), последнее обращение к которым было, скажем, более месяца назад (скорее всего такие файлы не нужны пользователям и только "засоряют" файловую систему), можно задать команду:
$ find / -name core -atim* +30 -print
/u/local/lib/zircon/lib/core
/u/local/etc/httpd/data/zzmaps/core
/home/amd/WORK/novosti/core
/home/amd/WORK/access/core
Операции изменения прав доступа
Chmod[mode] file
В операционной системе UNIXсуществуют три базовых класса доступа к файлу, в каждом из которых установлены соответствующие права доступа:
Useraccess(u)-для владельца-пользователя файла
Groupaccess(g)-для членов группы, являющейся владельцем файла
Otheraccess(о)-для остальных пользователей (кроме суперпользователя)
UNIXподдерживает три типа прав доступа для каждого класса: на чтение (read, обозначается символом г), на запись (write, обозначается символомw) и на выполнение (execute, обозначается символом х). Наличие права доступа обозначается соответствующим символом-rwx, а отсутствие — символом –‘-‘.
Операцию, которую необходимо произвести ('+' — добавить, '-' — удалить и '=' — присвоить) для списка файлов file], file2и т. д. Например, команда
$ chrnodg-wxownfile
лишит членов группы-владельца файла ownfileправа на запись и выполнение этого файла.
В одной команде можно задавать различные права для нескольких классов доступа, разделив их запятыми.
$ chmod a+w text
Предоставить право на запись для всех пользователей
$ chmod go=r text
Установить право на чтение для всех пользователей, за исключением владельца
$ chmod g+x-w runme
Добавить для группы право на выполнение файла runme и снять право на запись