Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Cadence / dsd21.doc
Скачиваний:
27
Добавлен:
16.04.2013
Размер:
4.2 Mб
Скачать

Команды для работы с файлами и каталогами.

Определение типа файлов

В ОС Solarisсуществует много различных типов файлов. Используйте командуfileдля определения некоторых типов файлов.

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

Формат команды

File имя_файла(ов)

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

- Текст – Примеры, включая текст формата ASCII, английский текст, текст команд и выполняемые скрипты командного интерпретатора.

- Данные – Файлы данных, создаваемые приложениями. В некоторых случаях показывается тип данных, например, для документов FrameMaker. Если командаfileне может определить тип файла, она показывает, что это просто файл данных.

- Исполняемый или двоичный – Примеры, включая файлы 32-битного исполняемого и внешне-связанного формата (ELF) кода и другие динамически связанные исполняемые файлы. Этот тип файлов показывает, что файл – команда или программа.

Далее представлен пример определения текстового файла:

$ file dante

dante: commands text

Вывод содержимого текстового файла:

Команда cat(соединение) выводит на экран содержимое одного или более текстовых файлов. Она часто используется для вывода небольших текстовых файлов, т.к.catпоказывает все содержимое файла на экране без пауз.

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

Формат команды

сat [имя_файла… ]

cat >имя_файла

Соединение нескольких файлов

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

$ cat filename1 filename2 > newfile1

Замечание – Имя файла после знака “>” не должно быть таким же, как любое имя файла перед знаком “>”, иначе команда catвыдаст следующее сообщение об ошибке:cat:input/outputfiles‘имя_файла’identical.

Извлечение годных для печати строк

Команда stringsнаходит годные для печати строки в двоичном файле данных. Это позволяет вам читать текстовые строки, встроенные в двоичный файл, которые можно использовать для программирования.

Метасимволы

Существуют еще два полезных метасимвола в командном интерпретаторе – это символ перенаправления вывода (>) и символ конвейера (pipe) (|).

Символ перенаправления (>) берет вывод команды и направляет его в указанный файл.

Символ конвейера (|) используется в командной строке для направления вывода одной команды на вход другой команде.

Просмотр содержимого файла

Для просмотра содержимого большого текстового файла используйте команду more. При использовании этой команды содержимое текстового файла показывается на экране не все сразу, а по частям, при показе каждой из которых внизу экрана появляется следующее сообщение:

--More—(n%)

n% - это процент уже показанной части файла. Когда содержимое файла показывается полностью, то появляется приглашение командной строки.

Команда moreиспользуется при показе страниц встроенного руководства так, что клавиши управления прокруткой, представленные в табл. 4-1, такие же, какие используются для управления показом страниц встроенного руководства.

Замечание – Использования команд catилиmoreдля чтения двоичных файлов может привести терминал или окно к остановке. Если это произойдет, то закройте окно терминала и откройте новое или выберитеReset->SoftResetиз менюCDE Options.

Формат команды

More [ имя_файла… ]

Используйте команду для чтения текстовых, а не двоичных файлов.

Клавиши управления прокруткой

В строке --More-- вы можете использовать клавиши, описанные в табл. 4-1, для управления возможностями прокрутки.

Табл. 4-1 Клавиши управления прокруткой для команды more

Клавиша

Описание

Пробел

Прокрутка на следующий экран

Return

Прокрутка на одну строку вниз

b

Возврат на один экран

f

Прокрутка вперед на один экран

h

Вывод меню помощи и описания возможностей

q

Выход и возврат в командную строку командного интерпретатора

/string

Поиск «вперед» строки string

n

Поиск следующего вхождения строки string

Просмотр больших файлов

Используйте команду pgдля просмотра файла, длина которого больше чем один экран.

Эта команда делает паузы после показа каждого экрана текста и выводит знак «:» в конце страницы. Нажмите клавишу Returnдля вывода следующего экрана или используйте клавиши прокрутки, представленные в табл. 4-2.

Команда pgвыводит приглашение “EOF:”, когда достигнут конец файла. Нажмите клавишуReturnдля возвращения в приглашение командной строки.

Формат команды

Pgимя_файла(ов)

Клавиши прокрутки

В табл. 4-2 показаны клавиши, используемые для управления прокруткой экрана.

Табл. 4-2 Клавиши прокрутки для команды pg

Клавиша

Описание

Return

l <Return>

d <Return>

.<Return>

+ /шаблон/ <Return>

$ <Return>

h <Return>

q <Return>

Вывод количества строк, слов и символов файла

Команда weпоказывает количество строк, слов и символов, содержащихся в файле.

Формат команды.

wc[ -lwcm ] [имя_файла ... ]

Использование команды wc с параметрами

Вы можете использовать следующие параметры с командой we:

-1Вывод количества строк

-wВывод количества слов

-с Вывод количества байт

Вывод количества символов

Использование команды we без параметров

При использовании команды weбез параметров будет выведено количество строк, слов и символов, содержащихся в файле, например:

$ wc dante

33 223 1320 dante

$

Определение количества строк в файле

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

$ wc - l dante

33 dante

$

Создание пустых файлов

Используйте команду touchдля создания пустого файла. Если в системе уже существует файл или каталог с таким же именем, как и у создаваемого, тогда командаtouchобновляет его время изменения и доступа на текущее.

Формат команды

touchимя_файла ...

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

Создание пустых файлов

Для создания пустого файла выполните следующее:

$ cd -/practice $ touch mailbox project projection research

$ ls

mailbox project

projection research

Перенаправление и вывод содержимого файла используя команду tee

Используйте команду teeв потоке для получения данных на входе и записи их как в стандартное устройство вывода, так и в указанный файл.

Команда teeкопирует стандартный ввод в стандартный вывод, записывая копию информации в файл (Рис. 4-1).

Рис. 4-1Командаtee

Формат команды

tee [-а ]имя_файла ...

Дублирование данных

В следующем примере вывод команды lsзаписывается в файлlogfileи также выводится на экран по мере его заполнения.

Добавление данных к файлу

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

Например:

Создание каталогов

Используйте команду mkdirдля создания каталогов. Вы можете создавать каталоги, используя как абсолютные, так и относительные пути доступа.

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

Формат команды

mkdir [-р ]имя_каталога ...

Создание нового каталога

В этом примере команда mkdirсоздаёт новый каталог в домашнем каталоге пользователяuser1.

ЗамечаниеПомните, что символ тильда (-),обозначающий ваш домашний каталог, доступен во всех командных интерпретаторах, за исключениемBourne.

Чтобы создать каталог, вы должны иметь соответствующие права доступа (права доступа обсуждаются в главе 6).Если у вас нет нужных прав доступа, то при попытке создать каталог вам будет выведено сообщение об ошибке, похожее на следующее:

Создание многоуровневой структуры каталогов

Для одновременного создания многоуровневой структуры каталогов используйте параметр -р. В следующем примере команда mkdir-р создаёт каталогpractice2 как подкаталог текущего каталога.

В то же самое время команда создаёт подкаталог dir1 в каталогеpractice2и каталогadminв каталогеdir1.

Копирование файлов и каталогов

Команда ср копирует файлы и каталоги.

Копирование файлов

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

Формат команды

ср [-ir ]файл_источник файл_назначения ср [ -ir ]файл_источник ... каталог_назначения

Копирование файла в другой файл

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

Копирование нескольких файлов

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

Предотвращение перезаписи существующих файлов при копировании

Используйте команду ср с параметром -iкак предупреждение. Параметр - iвыдаёт приглашение для подтверждения перед перезаписью любого существующего файла новым.

• Отвечая yes,вы подтверждаете перезапись.

• Отвечая по, вы предотвращаете перезапись командой ср существующего файла.

Например:

Копирование каталогов

Используйте команду ср с параметром -г для копирования каталога и его содержимого в другой каталог. Если этот каталог не существует, он будет создан командой ср.

Формат команды

ср -irисходный_каталог(и) каталог_назначения

При использовании параметра -iкоманда ср спрашивает подтверждения перед перезаписью существующего каталога или файла.

Копирование содержимого каталога в новый каталог

Следующий пример показывает, как копировать существующий каталог и всё его содержимое в новый в текущем рабочем каталоге.

Если вы не используете параметр -г, получите сообщение об ошибке:

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

Перемещение и переименование файлов и каталогов

Используйте команду mvдля перемещения или переименования файла или каталога. Эта команда не воздействует на содержимое файла или каталога, она изменяет только метоположение или заменяет старое имя на новое.

Старое имя соответствует исходному файлу, а новое имя -новому. Если каталог назначения не существует, он будет создан.

Формат команды

mv [ -i ]источник каталог__назначения

mv [ -i ]источник... каталог_назначения

Параметр -iвыдаёт приглашение для подтверждения перед перемещением с перезаписью любого существующего файла новым.

• Отвечая yes,вы подтверждаете перенос и перезапись.

• Отвечая nо, вы предотвращаете перезапись командой mvфайла назначения.

Переименование файлов в текущем каталоге

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

Перемещение файлов в другой каталог

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

Если вы перемещаете один каталог, и каталог назначения не существует, то каталог переименовывается в каталог назначения.

Если вы перемещаете несколько каталогов, и каталог назначения не существует, тогда вам будет выведено следующее сообщение об ошибке: mv:target_directorynotfound.

Переименование каталогов

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

Перемещение каталога вместе с его содержимым

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

Переименование файлов в другом каталоге

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

Удаление файлов и каталогов

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

Удаление файлов

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

Формат команды

rm[ -ir ]имя_файла . . .

Удаление нескольких файлов

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

Используйте команду rmcпараметром -iдля вывода предупреждения. Параметр -iвыводит приглашение для подтверждения перед удалением любого файла.

• Отвечая yes,вы подтверждаете удаление.

• Отвечая nо, вы запрещаете команде rmудалять файл.

Например:

Удаление каталогов

Вы можете удалить ненужные каталоги, используя команды rmdirиrm.

• Команда rmdirудаляет только пустые каталоги.

• Команда rm-г может удалять каталоги, содержащие файлы.

Формат команды

rmdirимя_каталога(ов) rm-r[i]имя_каталога(ов)

Предупреждение —Для получения подтверждения перед удалением любого файла используйте параметр -iкоманды rm.Этот параметр запускает команду в интерактивном режиме.

Удаление пустого каталога

Используйте команду rmdirдля удаления пустого каталога, например:

Интерактивное удаление каталогов

Используйте команду rm-irдля интерактивного удаления каталогов, например:

Удаление каталога с содержимым

Используйте команду rm–rдля удаления не пустого каталога, например:

ЗамечаниеВы не можете удалить каталог, пока находитесь в нём. Необходимо переместиться в вышестоящий каталог для удаления подкаталога.

Поиск файлов и текста

Поиск, файлов с использованием команды find

Используйте команду findдля поиска файлов в дереве каталогов. Эта команда даёт вам возможность искать файлы по заданному критерию, такому как имя файла, размер, владелец, время изменения или тип.

Команда findосуществляет рекурсивный поиск в дереве каталогов тех файлов, которые соответствуют критериям поиска.

Как только findнаходит файлы, которые соответствуют критериям поиска, то пути доступа к ним выводятся на экран.

Формат команды

findпутьвыражение(я) действие(я)

Первый аргумент в командной строке -это путь доступа, в котором начинается поиск. Это может быть как абсолютный, так и относительный путь.

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

С Табл. 5-1по Табл. 5-3на странице 5-5содержится описание аргументов, выражений и действий, используемых с командойfind.

Табл. 5-1Аргументы используемые с командойfind

Аргумент Описание

путь Путь к каталогу, в котором будет вестись поиск.

выражениеКритерий поиска, указанный одним или более параметрами. Указание многих параметров говоритfindпонимать как запрос "AND" и все перечисленные выражения должны возвратить истину.

Табл. 5-2Выражения, используемые с командойfind

Выражение Описание

-nameимя_файлаПоиск файлов по имени. Метасимволы допустимы, если указываются внутри " ".

-size[+|-]nПоиск файлов, размер которых больше чем+n, меньше чем -nили равны п. п, задаётся в 512-байтных блоках.

-atime [+1 - ]nПоиск файлов, к которым производился доступ более чем +nдней назад, менее чем -nдней назад или ровноnдней.

-mtime[+|-]nПоиск файлов, которые были изменены более чем +nдней назад, менее чем -nдней или ровноnдней.

-userloginIDПоиск всех файлов, которые принадлежат пользователю с именемlogin ID.

-typeПоиск по типу файла, например: f(файл) илиd(каталог).

-реrmПоиск файлов, которые имеют соответствующие права доступа.

Табл. 5-3Действия, используемые с командойfind

Действие Описание

-ехес команда [} \;Автоматическое выполнение указанной команды на каждый найденный файл. Множество квадратных скобок и {}разделяют имя файла от команды в выражении. Пробел, обратная косая черта и точка с запятой (\;)отделяют конец команды. Перед знаком обратной косой черты (\) должен стоять пробел.

-okкоманда {} \;Указывает на интерактивную форму-ехес. Это требует ввода перед тем, как командаfindвыполнит команду на файл, во всём остальном функциональность совпадает с действием -ехес.

-printУказывает командеfindвывести имя текущего найденного файла на экран терминала. Используется по умолчанию.

-lsВыводит имя текущего найденного файла вместе со статистикой, такой как номерinode, размер в килобайтах, права доступа, количество жёстких ссылок и информация о владельце.

Следующие примеры показывают возможности команды find.

• Для поиска файлов с именем core, начиная с каталогаroot (/), выполните команду:

$find/ -namecore

• Для поиска файлов с именем core, начиная с вашего домашнего каталога, с удалением всех найденых файлов выполните следующую команду:

$ find - -name core -ехес rm {} \;

• Для поиска всех файлов, начиная с текущего каталога, которые не изменялись за последние 90дней, выполните команду:

$find. -mtime +90

• Для поиска файлов, размер которых больше, чем 57блоков (512-байтовые блоки), начиная с домашнего каталога, выполните команду:

$ find ~ -size +57

• Для поиска файлов, имена которых заканчиваются на символы "tif", начиная с каталога /usr, выполните команду:

$ find /usr -name '*tif

Поиск, различий между файлами

В ОС Solarisсуществует несколько утилит, которые позволяют сравнивать два файла и выводить различия, если таковые будут найдены.

Поиск, различий с использованием команды cmp

Используйте команду cmp для сравнения файлов на предмет выявления различий. Эта команда печатает результаты, только если отличия между файлами найдены. Если не выведено никаких результатов, то, значит, файлы одинаковы.

Команда стр делает побайтовое сравнение каждого файла. Если байты в файлах различаются, то тогда команда cmp выводит номер байта и номер строки, где выявлено первое различие, и затем прекращает свою работу

Эта команда работает как с двоичными, так и с ASCIIфайлами.

Формат команды

cmp имя_файла 1 имя_файла2

Использование команды сmp для сравнения файлов, которые кажутся одинаковыми

В этом примере найдено первое несоответствие между двумя файлами. Это различие возникло на 27символе на строке 5.

Поиск текстовых различий с использованием команды di f f

Команда diff -это другая команда, которая используется для поиска различий между файлами.

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

Формат команды,

diff-параметр имя_файла имя_файла

В Табл. 5-4показаны параметры, которые могут быть использованы с командой diff.

Табл. 5-4Параметры команды diff

Параметр Описание

-iИгнорирует регистр символов, например, А эквивалентно а.

-с Создаёт контекстный список различий.

Использование команды diff с параметром -с

При использовании команды diffс параметром -с для сравнения файлов результаты будут выводится в виде трёх секций.

Первая секция содержит имена сравниваемых файлов и их даты создания, затем каждое изменение, разделённое линией звёздочек (*).

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

В третьей секции содержатся строки второго файла, которые отличаются от соответствующих строк первого файла. Эти строки, добавленные во второй файл, помечаются символом '+'.Строки, которые перенесены из одного файла в другой, помечены в обоих файлах символом '!'.В большинстве случаев три строки, представляющие первое различие, выводятся как контекстная информация.

Ниже приведён пример использования команды diffдля сравнения файлов с параметром -с:

Сортировка данных

Команда sortсортирует текстовые строки в одном или более файлах и выводит результат на экран.

Команда sortпредоставляет быстрый и простой метод организации данных в числовом или алфавитном порядке.

По умолчанию sortиспользует символы пробела и табуляции для разделения различных полей в данных файла.

Формат команды

sort (-/+)параметры имя_файла(ов)

Параметры

Параметры, доступные с командой sort, используются для определения типа сортировки, а также поля, по которым будет производиться сортировка (Табл. 5-5).

Табл. 5-5Параметры, используемые с командойsort

Параметр Описание

-nПроизводит числовую сортировку.

(+ | -)nНачинает (+n) или заканчивает (-n) сортировку поля, следующего за полемп.

-г Меняет порядок сортировки.

-fИгнорирует регистр символов.

-М Сортирует первые три символа поля как сокращение имени месяца.

-dИспользуется словарная сортировка. Сравниваются только буквы, цифры и пробелы, все остальные символы игнорируются.

-о Вывод результатов в файл имя_файла. имя_файла

-bИгнорирует начальные пробелы при определении начальной и конечной позиций ограниченного ключа сортировки.

-tсимволИспользует символ как разделитель полей. Если параметр -tне указан, то по умолчанию в качестве разделителей полей используются символы пробела и табуляции.

Использование команды sort с разными параметрами

На следующих примерах показаны различные пути использования команды sortс разными параметрами:

$cat fileA

Annette 48486

Jamie 48481

Fred 48487

Sondra 48483

Janet 48482

$sort fileA

Annette 48486

Fred 48487

Jamie 48481

Janet 48482

Sondra 48483

$sort +1n fileA

Jamie 48481

Janet 48482

Sondra 48483

Annette 48486

Fred 48487

На первом примере показано содержимое файла fileA,выведенное на экран с помощью командыcat.

Первая команда sortосуществляет сортировку в алфавитном порядке, начиная с первого символа каждой строки.

Далее производится числовая сортировка по второму полю (sortпропускает один разделитель с синтаксисом +1).

Использование команды sort по разным полям в файле

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

$ ls -l f* > list

$ cat list

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.l

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 Eile.2

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.3

-rw-r--r-- 1 useri staff 1696 Feb 22 14 51 filel

-rw-r--r-- 1 useri staff 156 Mar 1 14 48 file2

-rw-r--r-- 1 useri staff 218 Feb 22 14 51 file3

-rw-r--r-- 1 useri staff 137 Feb 22 14 51 file4

-rw-r--r-- 1 useri staff 56 Feb 22 14 51 fruit

-rw-r--r-- 1 useri staff 57 Feb 22 14 51 fruit2

$

$ sort -rn +4 list -o num.list

$ cat num.list

-rw-r--r-- 1 useri staff 1696 Feb 22 14 51 filel

-rw-r--r-- 1 useri staff 218 Feb 22 14 51 file3

-rw-r--r-- 1 useri staff 156 Mar 1 14 48 file2

-rw-r--r-- 1 useri staff 137 Feb 22 14 51 file4

-rw-r--r-- 1 useri staff 57 Feb 22 14 51 fruit2

-rw-r--r-- 1 useri staff 56 Feb 22 14 51 fruit

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.3

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.2

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.l

$

$ sort +5M +6n list -o update.list

$ cat update.list

-rw-r--r-- 1 useri staff 56 Feb 22 14 51 fruit

-rw-r--r-- 1 useri staff 57 Feb 22 14 51 fruit2

-rw-r--r-- 1 useri staff 137 Feb 22 14 51 file4

-rw-r--r-- 1 useri staff 218 Feb 22 14 51 file3

-rw-r--r-- 1 useri staff 1696 Feb 22 14 51 filel

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.l

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.2

-rw-r--r-- 1 useri staff 0 Feb 25 12 54 file.3

-rw-r--r-- 1 useri staff 156 Mar 1 14 48 file2 S

В первом примере вывод команды Is записывается в файл list. Содержимое этого файла выводится на экран с помощью команды cat.

Первая команда sort выполняет обратную числовую сортировку по пятому полю и записывает результат в файл num. list.

Во втором примере команда sort выполняет многоуровневую сортировку по полям 6 и 7 в файле list.

• Параметр +5M задаёт алфавитную сортировку по месяцу в шестом поле.

• Параметр +6n задаёт цифровую сортировку второго уровня по дням в седьмом поле.

• Параметр -о помещает результат в файл update, list.

Поиск, текста в файлах

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

По определению, символьный шаблон, используемый при поиске для сравнения одинаковых символов называется регулярным выражением (RE).

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

Замечание -Название командыgrер происходит из текстового редактораUNIX, который использует последовательность командg/re/p, которая означаетglobal/regularexpression/print.

• Команды egrepиfgrepявляются вариантамиgrер; еgrер использует расширенные регулярные выражения, а fgrep,в отличие от регулярных выражений использует фиксированные строки.

Использование команды grер

Команда grер осуществляет поиск в содержимом одного или нескольких файлов на предмет сравнения с регулярным выражением или символьным шаблоном. Если совпадение будет найдено, тоgrер выведет на экран каждую строчку, содержащую совпадение, изменение самого файла при этом не производится.

Формат команды

grерпараметр(ы) шаблон имя_файла(ов)

Параметры

Команда grер предоставляет большое количество параметров для изменения способа поиска или вывода результатов.

Некоторые часто используемые параметры описаны в Табл. 5-6.

Табл. 5-6Параметры командыgrер

Параметр Описание

-iЗадаёт режим игнорирования регистра, символы верхнего и нижнего регистров считаются идентичными.

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

-nЗадаёт простановку относительного номера к каждой строке в файле.

-vМеняет условия поиска на обратные для выдачи только тех строк, которые не соответствуют шаблону

-с Задаёт вывод только количества строк, которые содержат шаблон.

-wЗадаёт поиск выражения как слова.

Примеры поиска с использованием регулярных выражений в команде grер

Далее представлены примеры использования команды grер по поиску с применением регулярных выражений:

• Для поиска всех строк, которые содержат "root", в файле /etc/group, выполните следующую команду:

$ gгер -п root /etc/group

1:root :0:root

3:bin: 2:root,bin,daemon

4:sys: 3:root,bin,sys,adm

5:adm: 4:root,adm,daemon

6:uucp :5:root,uucp

7:mail :6:root

8:tty: 7:root,tty,adm

9:Ip::8:root,Ip,adm

10:nuucp::9:root,nuucp

12 :daemon: : 12 :root,daemon

$

• Для поиска всех строк, которые не содержат "root", в файле /etc/group,выполните следующее:

$ grep -v root /etc/group

other::1:

staff::10:

sysadmin::14:

nobody::60001:

noaccess::60002:

nogroup::65534:

$

• Для поиска только тех файлов, которые содержат "root", выполните следующее:

$ cd /etc $ grep -l root group passwd hosts

group

passwd

$

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

• Для поиска "the" во всех файлах каталога /etcс выводом только имён файлов, где есть строки, содержащие "the" или "The", выполните следующее:

$ cd /etc

$ grep -li the *

aliases

asppp.сf

dacf.conf

device.tab

devlink.tab

dgroup.tab

fmthard

format

<output omitted>

syslog.conf

system

termcap

TIMEZONE

ttysrch

umountall

$

• Для поиска "root" в файле /etc/groupс выводом только количества строк, содержащих это слово, выполните следующую команду:

$ grep-с root group

10

$

• Для поиска "mar 1"в выводе командыls-laвыполните следующее:

$ Is -la I grep -i 'mar 1'

drw------- i root root 0 Mar 1 11:05 initpipe

-r--r--r-- 1 root root 806 Mar 1 13:39 mnttab

prw------- 1 root root 0 Mar 1 11:06 utmppipe

$

Если дата выражена одной цифрой, то ключ для команды grep должен иметь два пробела между месяцем и днём, например:

Маг 1.

Метасимволы регулярных выражений

Команда grep поддерживает несколько метасимволов в регулярных выражениях для определения шаблона. В Табл. 5-7содержится описание некоторых часто используемых метасимволов.

Табл. 5-7Метасимволы в регулярных выражениях

Метасимвол Значение Пример Результат

Знак начала '"pattern' Выбор всех строк, строки начинающихся с

"pattern

$ Знак конца'pattern$' Выбор всех строк,

строки заканчивающихся на

pattern

Обозначает 'р.. ...п' Выбор строк, один любой содержащих символ 'р' символ и через пять символов следующий за ним символ 'п'

*Соответствует '[a-z]*' Выбор алфавитных любому символов нижнего количеству регистра символов

Табл. 5-7Метасимволы в регулярных выражениях (продолжение)Метасимвол Значение Пример Результат

[ ]Соответствует '[Рр]attern' Выбор строк,

одной позиции содержащих'Pattern' в ключе поиска или 'pattern'

[л] Соответствует '[^a-mJattern' Выбор строк, не

одному содержащих символы в символу не в диапазоне от 'а' до "т" диапазоне и следующих перед поиска "attern"

Примеры

Далее представлены примеры использования метасимволов в регулярных выражениях.

• Для вывода на экран всех строк файла /etc/passwd, начинающихся с "root", выполните следующую команду:

$grep'"roof/etc/passwd

• Для вывода всех строк из файла /etc/passwdсодержащих символ 'А', следующие за ним три любых символа и заканчивающихся символом 'п', выполните следующую команду:

$ grep'А...п' /etc/passwd

• Для вывода всех строк, которые оканчиваются на "adm" в файле /etc/group, выполните следующую команду:

$grep'adm$' /etc/group

Использование команды egrep

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

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

Формат команды

egrep [-параметры ] шаблон имя_файла ...

Примеры использования команды egrep

В следующих примерах показаны различные способы использования команды egrep:

• Для поиска всех строк, содержащих символ "N" и следующие за ним символы 'е' или 'о' один или несколько раз, выполните следующую команду:

$ egrep 'N(elo)+' /etc/passwd

listen:x:37:4:Network Admin:/usr/net/nls:

nobody:х:60001:60001:Nobody:/:

noaccess.'x: 60002: 60002 :No Access User:/:

• Для поиска строк, содержащих "NetworkAdmin" или "uucpAdmin", выполните следующую команду:

$ egrep '(Network!uucp) Admin' /etc/passwd

uucp:x:5:5:uucp Admin :/usr/lib/uucp:

nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico listen:x:37:4:Network Admin:/usr/net/nls:

Использование команды fgrep

Команда fgrepосуществляет поиск в файле ключевого выражения как фиксированной строки. Её работа отличается от работыgrepиegrep, т.к. она обрабатывает все символы и любые метасимволы регулярных выражений, указанные в командной строке, как обычные символы. Для этой команды специальное значение имеют только два символа: знак вопроса (?)и знак доллара ($).

Используйте команду fgrepдля поиска словосочетаний в файлах, содержащих метасимволы.

Формат команды

fgrepпараметр(ы) шаблон имя_файла(ов)

Пример использования fgrep

Для поиска всех строк в файле, содержащих строку текста и символы, с помощью команды fgrepвыполните следующее:

$ fgrep '*' /etc/system

Права доступа к файлам и каталогам

Обзор системы безопасности

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

ОС Solarisпредоставляет два базовых способа предотвращения неавторизованного доступа к системе и защиты её данных.

Первый способ основывается на идентификации пользователя при входе его в систему, проверяя его идентификатор входа (имя пользователя) и пароль на существование в файлах /etc/passwdи /etc/shadowсоответственно.

Второй способ -это автоматическая защита файлов и каталогов путём определения доступа к ним через набор стандартных прав доступа, определяемых при создании файлов и каталогов.

Замечание —ОСSolarisтакже предоставляет специальную учётную запись в каждой системе, называемуюroot. Пользовательroot, часто именуемый каксуперпользователь,имеет полный доступ к любой учётной записи и всем файлам и каталогам, ей принадлежащим. Пользовательrootможет изменять права доступа, наложенные на файлы и каталоги.

Просмотр прав доступа на файлы и каталоги

Просмотреть информацию о правах доступа на файлы и каталоги можно с помощью команды ls -1.

Первое информационное поле, выводимое этой командой, -это тип файла, далее следуют три класса пользователей и их права доступа.

• Тип файла —Обозначает, что элемент представляет файл или каталог.

• Пользователь (owner) — Содержит список прав доступа для владельца.

• Группа (group) — Содержит список прав доступа для группы пользователей.

• Другие (other) — Содержит список прав доступа для всех остальных пользователей.

Рис. 6-1иллюстрирует права доступа для каждого класса пользователей.

Рис. 6-1Права доступа для каждого класса пользователей

Категории прав доступа

В следующих разделах описаны категории прав доступа.

Тип файла

Первый символ в списке, выводимом командой ls -1,определяеттип файла.

Каталог представлен символом d. Обычный файл представлен дефисом (-).

Знак дефиса или тире (-),находящийся где-либо во множестве прав доступа, обозначает, что соответствующее право доступа отсутствует.

Права доступа владельца

Следующие три символа являются правами доступа владельца.Они обозначают, какой тип доступа имеет владелец на файл. На Рис. 6-1 на странице 6-4user, владелец этого файла, имеет на него права доступа на запись и чтение.

Группа

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

Группа -это множество пользователей, которым нужен доступ к одним и тем же файлам. Все пользователи в группе имеют доступ к файлам друг друга с правами доступа группы к этим файлам.

Системный администратор может создавать и управлять группами в файле /etc/groupи добавлять пользователей в группы в соответствии с доступом к разделяемым файлам.

На Рис. 6-1на странице 6-4файл принадлежит группеstaff, и все пользователи, которые входят в эту группу, имеют права доступа на чтение этого файла.

Остальные

Третье множество -это три символа, обозначающиеправа доступа для других пользователей,или для всех остальных.

Другие -это любой пользователь, который не являетсявладельцем файла и не входит в группу, которая является владельцем этого файла, но этот пользователь имеет доступ к системе. На Рис. 6-1на странице 6-4другие пользователи имеют права только на чтение файла.

Определение доступа к файлу или каталогу

Доступ к файлу или каталогу определяется идентификационным номером пользователя (UID)и идентификационным номером группы (GID).

• UID— определяет пользователя, который создал каталог или файл.

• GID— определяет группу пользователей, которая владеет

каталогом или файлом. Файл или каталог может принадлежать только одной группе в данное время.

Все файлы и каталоги содержат номер UIDи GID.ОСSolarisиспользует эти номера для выявления принадлежности файла или каталога тому или иному пользователю или группе.

Для просмотра этих номеров UIDи GIDиспользуйте командуls -n:

$ Is -n total 108

-rw-r--r-- 1 11001 10 0 Feb 22 14:51 brands

-rw-r--r-- I 11001 10 1320 Feb 22 14:51 dante

-rw-r--r-- 1 11001 10 368 Feb 22 14:51 dante_l

Процесс определения прав доступа

Когда пользователь пытается получить доступ к файлу или каталогу, ОС Solarisсравнивает его номер UIDс номером UIDтого файла или каталога, к которому пользователь пытается получить доступ (Рис. 6-2на странице 6-8).

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

Если номера UIDне равны, тогда GIDпользователя сравнивается сGIDфайла или каталога. Если эти номера совпадают, то применяются права доступа для группы.

Если GIDне совпадают, то используются права доступа, определённые дляостальныхпользователей.

Рис. 6-2Процесс определения прав доступа

Типы прав доступа

Доступ к файлу или каталогу защищён стандартным набором прав доступа, который автоматически назначается ОС Solarisпри создании файла или каталога.

Права доступа определяют, кто и что может делать с файлом и каталогом и представлены символами г (чтение), w(запись), х (выполнение) и -(нет права).

Когда пользователь создаёт новый файл или каталог, ОС Solarisавтоматически присваивает файлу права доступаrw-rw-rw- и каталогуrwxrwxrwx.

Замечание —Права на выполнение пользователь может дать файлам с помощью командыchmod, но эти права не даются файлу по умолчанию при его создании.

Права доступа чтение/запись/выполнение интерпретируются по разному в случае обычного файла и каталога. В Табл. 6-1описаны эти различия.

Табл. 6-1Права доступа и соответствующие символы

Право доступа

Символ права доступа

Файл

Каталог

Чтение

r

Файл можно вывести на экран или скопировать

Содержимое можно вывести на экран с помощью ls

Запись

w

Содержимое файла можно изменить

Если пользователь также имеет доступ на выполнение, файлы можно создавать или удалять

Выполнение

x

Файл можно выполнить (только для скриптов командного интерпретатора или исполняемых файлов)

Пользователь может выполнять команду cdдля доступа к каталогу. Если пользователь также имеет доступ на чтение, то он может выполнять и командуlsна этот каталог.

Замечание —Для каталога, в общем случае, вы должны устанавливать права доступа на чтение и выполнение.

Далее представлены примеры использования различных прав доступа на файлы и каталоги.

• Этот файл имеет права доступа чтение/запись/выполнение только для его владельца. Для всех остальных групп и пользователей доступ запрещён:

-rwx------

• Этот каталог имеет права чтение/выполнение только для владельца каталога и группы:

dr-xr-x---

• Этот файл имеет права чтение/запись/выполнение для его владельца и чтение/выполнение для группы и всех остальных пользователей:

-rwxr-xr-x

Изменение прав доступа

Вы можете изменить права доступа, установленные на вновь созданные файлы или каталоги, используя команду chmod. Только владелец этого файла или каталога, а также пользовательrootмогут использовать эту команду для изменения прав доступа.

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

• При символической записи используется комбинация знаков и символов для добавления, удаления или установки прав доступа для каждого класса пользователей.

• При восьмеричной записи используются цифры,

представляющие каждое право и часто называется абсолютным режимом.

На Рис. 6-3на странице 6-12показаны взаимосвязи между правами доступа и файлами.

Рис. 6-3Символическая запись формата команды

Изменение прав доступа, используя символическую запись

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

• Изъятие прав на чтение у "других" пользователей:

$ ls -l dante

-rw-r--r-- 1 useri staff 1320 Feb 22 14:51 dante $ chmod o-r dante $ la -1 dante

-rw-r----- 1 useri staff 1320 Peb 22 14:51 dante $

• Изъятие права на чтение у группы:

$ chmod g-r dante $ Is -I dante

-rw------- 1 useri staff 1320 Feb 22 14:51 dante

$

• Добавление прав на выполнение для владельца и на чтение группе и остальным пользователям:

$ chmod u+x,go+r dante $ la -I dante

-rwxr--r-- 1 useri staff 1320 Feb 22 14:51 dante $

• Присвоение прав на чтение и запись для владельца, группы и "другим":

$ chmod a=rw dante $ Is -I dante

-rw-rw-rw- 1 useri staff 1320 Feb 22 14:51 dante $

Восьмеричная (абсолютная)

Вы также можете задавать права доступа, используя комбинацию восьмеричных цифр. Используемые цифры -от 0до 7.

Формат команды

chmodвосьмеричные_цифры иыя_файла

Каждое право доступа представлено своим восьмеричным числом (Табл. 6-2).

Табл. 6-2Соответствие восьмеричных цифр правам доступа

Восьмеричное число Право доступа

4Чтение

2Запись

1Выполнение

Каждая восьмеричная цифра представляет множество прав, как это показано в Табл. 6-3.

Табл. 6-3Соответствие восьмеричных цифр множествам прав доступа

Восьмеричная цифра Множество прав доступа

7 r w x

6 r w –

5 r - x

4 r - -

3 - w x

2 - w –

1 - - x

О - - -

Комбинируя восьмеричные цифры, пользователь может быстро изменить права доступа для каждого класса пользователей. Первая восьмеричная цифра определяет права доступа владельца,вторая -права доступа группыи третья определяетправа доступа для остальных пользователей(Табл. 6-4/

Табл. 6-4Комбинированные значения и права доступа

Восьмеричные числа Права доступа

644rw-r--r—

751rwxr-x--x

775rwxrwxr-x

777rwxrwxrwx

При использовании восьмеричной записи chmodавтоматически заполнит все недостающие слева цифры нулями.

Изменение прав доступа с использованием восьмеричной записи

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

ЗамечаниеКаждый пример основывается на результатах предыдущих команд.

• Добавление владельцу, группе и другим права доступа только на чтение и выполнение:

$ Is -l dante

-rw-rw-rw- 1 useri staff 1320 Feb 22 14:51 dante

$ chmod 555 dante

$ ls -1 dante

-r-xr-xr-x 1 useri staff 1320 Feb 22 14:51 dante

$

• Изменение прав доступа владельца и группы и добавление доступа на запись:

$ chmod 775 dante

$ ls -I dante

-rwxrwxr-x 1 useri staff 1320 Feb 22 14:51 dante

$

• Добавление прав доступа группы только на чтение и выполнение:

$ chmod 755 dante

$ ls -l dante

-rwxr-xr-x 1 useri staff 1320 Feb 22 14:51 dante

$

Права доступа по умолчанию

В следующих разделах описываются различные типы прав доступа по умолчанию.

Фильтр umask

Фильтр umaskуправляет правами доступа, назначенными вновь созданным файлам и каталогам. Фильтрumask- это трёхзначное восьмеричное число, которое определяет права на чтение/запись/выполнение для владельца, группы и всех остальных.

Вывод umask

$umask

022 $

В ОС Solarisзначениеumaskпо умолчанию - 022.

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

Первая цифра определяет права доступа по умолчанию для владельца, вторая -для группы и третья цифра -для остальных.

Начальные значения прав доступа по умолчанию, назначаемые системой при создании файла, - 666(rw-rw-rw-).

Начальные значения прав доступа по умолчанию, назначаемые системой при создании каталога, - 777(rwxrwxrwx).

Значение umaskавтоматически фильтруется или рассчитывается от начального значения прав доступа для определения прав доступа, по умолчанию назначаемых вновь созданным файлам и каталогам.

Алгоритм работы фильтра umask

Другой путь для определения, какие права доступа по умолчанию будут у вновь созданных файлов - это взять начальные значения определённые системой, которые представлены в символической записи:

rw-rw-rw-

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

42-42-42-

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

Например:

rw-rw-rw-Начальные значения, определённые системой для нового файла.

----w--w- Фильтрumaskпо умолчанию для вычитания.

rw-r--r-- Права доступа по умолчанию, назначаемые вновь созданным файлам.

Когда отказ в правах доступа замаскирован в начальном значении, права доступа, присваиваемые вновь созданным каталогам, остаются.

Всем вновь созданным файлам присваивается доступ на чтение-запись для владельца и доступ на чтение для группы и остальных пользователей:

rw-r--r--

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

В этом случае возьмите начальное значение, определённое системой и представленное в символической записи, как:

rwxrwxrwx

Оно соответствует правам доступа чтение/запись/выполнение для пользователя, группы, остальных и представлена в восьмеричном виде как:

Соседние файлы в папке Cadence