Команда find и символы шаблонов для имен файлов



Лабораторная работа 4. администрирование пользователей в ОС Linux. Организация рабочей среды пользователя

1. Войдите в систему.

2. Используя Центр управления, создайте своего пользователя.

3. Перейдите в первую текстовую консоль и зарегистрируйтесь пользователем root. Просмотрите файл /etc/passwd. Убедитесь, что созданный вами пользователь появился.

Примечание.

Для того чтобы просмотреть файл /etc/passwd, выполните команду:

cat /etc/passwd |less

cat /etc/passwd – выводит файл на экран, а команда less осуществляет  поэкранную разбивку вывода.

4. Создайте пользователя с помощью команды useradd.

5. Задайте созданному пользователю пароль, выполнив команду passwd.

6. Просмотрите файл /etc/passwd. Проконтролируйте создание бюджета (учетной записи) пользователя.

7. Средствами текстового редактора vi введите в файл /etc/passwd информацию о новом пользователе. Проверьте правильность его создания средствами Центра управления.

8. Проверьте наличие файла /etc/shadow в системе. Какова его структура?

9. Временно отключите запись некоторого пользователя, посмотрите, какие изменения произошли в файлах /etc/passwd и /etc/shadow.

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

11.  Просмотрите содержимое домашних каталогов пользователей.

12. Какие группы появились в системе после создания вами пользователей?

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

14.  Посмотрите, что содержится в каталоге /etc/rc.d? Как используется этот каталог?

15.  Просмотрите все процессы, запущенные в системе. Выведите различную информацию о запущенных процессах. Измените nice –число некоторого несистемного процесса, остановите некоторый пользовательский процесс.

 


Лабораторная работа  5. Работа с файловыми системами ОС Linux

1. Создайте в домашнем каталоге пользователя некоторый текстовый файл.

2. Посмотрите, какие разрешения получил данный файл после создания. Сделайте это двумя способами (через графический интерфейс и из командной строки). Проверьте действенность установок.

3. Просмотрите права доступа на основные системные файлы: /etc/shadow, /etc/fstab, /etc/passwd и т.д. В чем отличие прав доступа файла /usr/bin/passwd от других системных файлов? С какой целью установлены другие права доступа?

4. Создайте подкаталог домашнего каталога пользователя user1. Дайте право выполнения и запрет на чтение для владельца. Какой эффект вызвали эти действия? Создайте файл в этом каталоге. Виден ли этот файл?

5. Зайдите в каталоги /sbin и /bin, определите, какого типа файлы хранятся в этих каталогах.

6. Зайдите в каталог /dev. Какого типа файлы располагаются в этом каталоге?

7. Создайте в домашнем каталоге жесткую и символическую ссылки.

8. Зачем нужен файл /etc/fstab, изучите его структуру и содержание.

9. Приведите примеры работы с командой смены прав доступа к файлу в обеих формах.

10.  Изучите работу основных команд работы с каталогами (cd, pwd, ls, mkdir).

11.  Изучите работу основных команд работы с файлами (описание основных команд приведено в Приложении 1):

· конкатенацию и вывод файлов на экран;

· копирование и перемещение файлов;

· удаление файлов;

· поиск файлов: по имени, по некоторому шаблону, по типу (например, найти файлы всех символьных устройств), по сложному критерию поиска;

· выполнение некоторого действия с найденными файлами;

· сортировку информации в файле;

· поиск некоторой информации в файле.

12.  Создайте небольшой командный файл. Докажите его работоспособность.

13.  Изучите приемы создания архивов и сжатых файлов в ОС Linux (см. Приложение 2).


 

ПРИЛОЖЕНИЕ 1

Команды shell работы с файлами

Команда cat

Команда catчасто используется для создания файлов (хотя можно воспользоваться и командой touch). По команде cat на стандартный вывод (т. е. на экран) выводится содержимое указанного файла (или нескольких файлов, если их имена последовательно задать в качестве аргументов команды). Если вывод команды cat перенаправить в файл, то можно получить копию какого–то файла:

[user]$ cat file1 > file2

Собственно, первоначальное предназначение команды cat как раз и предполагало перенаправление вывода, так как эта команда создана для конкатенации, т.е. объединения нескольких файлов в один:

[user]$ cat file1 file2 ... fileN > new–file

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

[user]$ cat > newfile

После того как вы напечатаете все, что хотите, нажмите комбинацию клавиш <Ctrl>+<D> или <Ctrl>+<C>, и все, что вы ввели, будет записано в newfile. Конечно, таким образом создаются в основном короткие текстовые файлы.

Команда cp

Хотя для копирования файлов иногда пользуются командой cat, но в Linux существует для этого специальная команда cp. Ее можно применять в одной из двух форм:

[user]$ cp [options] source destination

[user]$ cp [options] source_directory new_directory

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

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

У команды cp имеется еще несколько полезных опций (табл. П.4.1).

Таблица П.4.1

Основные опции команды cp

Опция Значение
-p Сохраняет время модификации файла и максимально возможные полномочия. Без этой опции для нового файла задаются полномочия, соответствующие полномочиям запустившего команду пользователя
-R или  -r Если source — каталог, то копируется как он, так и все входящие в него подкаталоги, т. е. сохраняется исходная форма дерева каталогов

Окончание табл. П.4.1

Опция Значение
-d Если задать эту опцию, то символические ссылки будут оставаться ссылками (иначе вместо ссылки копируется файл, на который дается ссылка)
-f Перезаписать файлы при копировании (если такие уже есть) без дополнительных предупреждений

Команда mv

Если вам необходимо не скопировать, а переместить файл из одного каталога в другой, вы можете воспользоваться командой mv. Синтаксис этой команды аналогичен синтаксису команды cp. Более того, она сначала копирует файл (или каталог), а только потом удаляет исходный файл (каталог). И опции у нее такие же, как у cp.

Команда mv может использоваться не только для перемещения, но и для переименования файлов и каталогов (т. е. перемещения их внутри одного каталога). Для этого надо просто задать в качестве аргументов старое и новое имя файла:

[user]$ mv oldname newname

Но учтите, что команда mv не позволяет переименовать сразу несколько файлов (используя шаблон имени), так что команда mv *.xxx *.yyy не будет работать.

При использовании команды mv, также как и при использовании cp, не забывайте применять опцию –i для того, чтобы получить предупреждение, когда файл будет перезаписываться.

Команды rm и rmdir

Для удаления ненужных файлов и каталогов в Linux служат команды rm (удаляет файлы) и rmdir (удаляет пустой каталог). Для того чтобы воспользоваться этими командами, вы должны иметь право записи в каталоге, в котором расположены удаляемые файлы или каталоги. При этом полномочия на изменение самих файлов не обязательны. Если хотите перед удалением файла получить дополнительный запрос на подтверждение операции, используйте опцию – i.

Если вы попытаетесь использовать команду rm (безо всяких опций) для удаления каталога, то будет выдано сообщение, что это каталог, и удаления не произойдет. Для удаления каталога надо удалить в нем все файлы, после чего удалить сам каталог с помощью команды rmdir. Однако можно удалить и не пустой каталог со всеми входящими в него подкаталогами и файлами, если использовать команду rmс опцией -r.

Если вы дадите команду rm *, то удалите все файлы в текущем каталоге. Подкаталоги при этом не удалятся. Для удаления как файлов, так и подкаталогов текущего каталога надо также воспользоваться опцией -r. Однако всегда помните, что в Linux нет команды восстановления файлов после их удаления (даже если вы спохватились сразу же после ошибочного удаления файла или каталога)!

Так что дважды подумайте перед тем, как удалить что-либо, и не пренебрегайте опцией -i.

Команды more и less

Команда cat позволяет вывести на стандартный вывод (на экран) содержимое любого файла, однако она используется для этих целей очень редко, разве что для вывода очень небольших по объему файлов. Дело в том, что содержимое большого файла мгновенно «проскакивает» на экране, и пользователь видит только последние строки файла. Поэтому cat используется в основном по ее прямому назначению для конкатенации файлов, а для просмотра содержимого файлов (конечно, текстовых) используются команды more и less (или текстовые редакторы).

Команда–фильтр more выводит содержимое файла на экран отдельными страницами, размером как раз в целый экран. Для того чтобы увидеть следующую страницу, надо нажать на клавишу пробела. Нажатие на клавишу <Enter> приводит к смещению на одну строку. Кроме клавиш пробела и <Enter>, в режиме паузы еще некоторые клавиши действуют как управляющие (например, клавиша <B> возвращает вас на один экран назад), но мы здесь не будем приводить полного их перечня, как и перечня опций команды. Вам для начала надо только запомнить, что выйти из режима просмотра можно с помощью клавиши <Q>, т.к. если вы этого не знаете, то вам придется долго нажимать клавишу пробел, пока не доберетесь до конца длинного файла. Обо всех опциях команды more вы можете прочитать в интерактивном руководстве man или info.

Утилита less, разработанная в рамках проекта GNU, содержит все функции и команды управления выводом, имеющиеся в программе more, и некоторые дополнительные, например, позволяет использовать клавиши управления курсором (<Стрелка вверх>, <Стрелка вниз>, <PgUp>, <PgDown>) для перемещения по тексту. Вспомните, мы уже говорили об этом, когда рассматривали интерактивную подсказкуman.

Команды more и less позволяют производить поиск подстроки в просматриваемом файле, причем команда lessпозволяет производить поиск, как в прямом, так и в обратном направлении. Для организации поиска строки символов string надо набрать в командной строке программы в нижней части экрана (там, где двоеточие) /string. Если искомая строка будет найдена, будет отображен соответствующий кусок текста, причем найденная строка будет находиться в самом верху экрана.

Команда find и символы шаблонов для имен файлов

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

Общий синтаксис команды find имеет следующий вид:

find [список_каталогов] критерий_поиска

Параметр «список_каталогов» определяет, где искать нужный файл. Проще всего задать в качестве начального каталога поиска корневой каталог /, однако в таком случае поиск может затянуться очень надолго, так как будет просматриваться вся структура каталогов, включая смонтированные файловые системы (в том числе сетевые, если таковые есть). Можно сократить объем поиска, если задать вместо одного корневого каталога список из нескольких каталогов (естественно, тех, в которых может находиться искомый файл):

[user]$ find /usr/share/doc /usr/doc /usr/locale/doc –name instr.txt

Началом «критерия_поиска», определяющего, что именно должна искать программа find, считается первый аргумент, начинающийся на «-», «(», «)», «,» или «!». Все аргументы, предшествующие «критерию_поиска», трактуются как имена каталогов, в которых надо производить поиск. Если не указано ни одного пути, поиск производится только в текущем каталоге и его подкаталогах.

Шаблоны имен файлов строятся с помощью специальных символов «*» и «?». Значок «*» используется для замены произвольной строки символов. В Linux:

· * — соответствует всем файлам, за исключением скрытых;

· .* — соответствует всем скрытым файлам (но также текущему каталогу « и каталогу уровнем выше «..»);

· *.* — соответствует только тем файлам и каталогам, которые имеют « в середине имени или оканчиваются на точку;

· p*r — соответствует и «peter», и «piper»;

· *c* — соответствует и «picked», и «peck».

Значок « заменяет один произвольный символ, поэтому index?.htm будет соответствовать именам index0.htm, index5.htm и indexa.htm.

Кроме «*» и «?» в Linux при задании шаблонов имен можно использовать квадратные скобки [], в которых дается либо список возможных символов, либо интервал, в который должны попадать возможные символы. Например, [abc]* соответствует всем именам файлов, начинающимся с a, b, c; *[I–N1–3] соответствует файлам, имена которых оканчиваются на I, J, K, L, M, N, 1, 2, 3.

Вернемся к команде find и рассмотрим подробнее, какие критерии поиска возможны. Несколько примеров простых критериев поиска приведено в табл. П.4.2.

Таблица П.4.2

Критерии поиска для команды find

Опция Значение
-name шаблон Ищет файлы, имена которых соответствуют шаблону
-group имя Ищет файлы, принадлежащие указанной группе
-size число[c] Ищет файлы, размером в число 512–байтных блоков. Если после числа стоит символ c, значит размер указан в байтах (символах)

 

Окончание табл. П.4.2

Опция Значение
-mtime число Ищет файлы, которые в последний раз изменялись указанное число дней назад
-newer образец Ищет файлы, которые изменялись после изменения файла, указанного в образце
-type тип_файла Ищет файлы указанного типа. Тип задается одним из символов b (блок–ориентированные устройства), c (байт–ориентированные устройства), d (файл каталога), f (обычный файл), p (именованный канал) либо l (символическая ссылка)

Другие простые критерии вы можете узнать, если просмотрите man–страницу о команде find. Здесь же надо только сказать, что из простых критериев можно строить более сложные с помощью логических операций and, or или операции отрицания, знаком которой служит восклицательный знак. Например, если вы хотите найти все файлы, имена которых оканчиваются на .txt и .doc, то критерий можно записать как (-name *.txt -or -name *.doc). Можно комбинировать таким образом любое число критериев (и не только простых!). Если операция не указана явно, то подразумевается – and, т. е. вместо (-name *.txt -and -name *.doc) можно записать просто (-name *.txt -name *.doc). Если применяется только одна операция – and или !, то скобки обычно можно опустить, а с операцией – or и в сложных выражениях скобки необходимы. Перед скобкой нужно поставить обратную косую черту, а после скобки — пробел. Например, если вы хотите найти каталог по его имени, то можно сделать это командой

[user]$ find /usr -name doc -type d

или (с соблюдением правил построения сложных критериев)

[user]$ find /usr \( -name doc -and -type d \)

В следующем примере мы ищем файлы по такому критерию: либо имя файла оканчивается на *.tmp, либо размер файла больше 100 Кбайт:

[user]$ find /home/kos \( \( -name *.tmp \) -or \( -size +200 \) \)

В последнем примере стоит обратить внимание на то, что перед значением размера стоит знак «+». Такой знак можно использовать с любым числовым параметром в критериях поиска команды find. Он означает, что нужно искать файлы, у которых значение параметра больше заданного. Соответственно, знак «-» показывает, что надо искать файлы, у которых значение параметра меньше заданного. Если знаки «+» или «-» отсутствуют, ищутся файлы, у которых значение параметра равно заданному.

В заключение надо сказать еще о том, что после критерия поиска в команде find можно сразу же задать операцию, которая будет применяться ко всем файлам, найденным по указанному критерию. Простейшим примером использования такой возможности является указание команды – print:

[user]$ find /home/kos -name *.tmp -print

по которой выдается на экран список имен всех найденных файлов с указанием полного пути к файлу. Эта операция применяется по умолчанию, т. е. когда никаких операций вообще не указано (как это было во всех приведенных выше примерах). Другим примером операции, применяемой ко всем найденным файлам, может служить операция –exec cmd {} \;, где cmd — произвольная команда оболочки shell. То есть в этом случае ко всем найденным файлам (их именами заменяются поочередно фигурные скобки) применяется команда cmd. За cmd {} должна следовать точка с запятой, экранированная обратной косой чертой.

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

[root]# find . -type f -atime +30 -exec rm {} \;

Вместо -exec можно поставить -ok, тогда перед выполнением указанной команды cmd применительно к каждому файлу будет запрашиваться подтверждение.

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


Дата добавления: 2018-11-24; просмотров: 330; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!