Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка по linux.DOC
Скачиваний:
43
Добавлен:
11.04.2015
Размер:
452.1 Кб
Скачать

Стандартные каталоги файловой системы 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 и снять право на запись