Права на использование файла




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

для обычных файлов:

r - право на чтение содержимого файла

w - право на изменение содержимого файла

x - право на исполнение (запуск) файла

для каталогов:

r - право на получение списка файлов каталога

w - право на создание и удаление файлов в каталоге

x - право на "поиск" в каталоге

Набор прав --x для каталога позволяет войти в него и прочитать файл, имя которого заранее известно (при условии наличия прав чтения этого файла). Можно также выполнить команды ls и ls -l для этого файла. При этом получить список файлов (ls (-l) для каталога), а также создать или удалить файл нельзя.

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

Модификация файла требует прав на запись в файл, так как это операция над файлом. Удаление файла требует прав на запись в каталог, в котором находится этот файл - это операция над каталогом. Наличие права записи в файл не обязательно означает возможность его удалить (хотя можно размер файла уменьшить до нуля).

 

%ls -a

ls -a выводит также файлы, имена которых начинаются с точки.

%ls -al

%ls.bashrc

%ls -l.bashrc

%ls /bin

%ls -l /bin

Проблема: как вывести атрибуты самого каталога, а не его содержимого. Возможные решения: ls -l (строка файла bin) и ls -al bin (строка файла '.') неудовлетворительны при большом числе файлов в текущем каталоге и в каталоге bin - получится слишком длинный листинг.

Решение:

%ls -d /bin

%ls -ld /bin

%ls -ld.

%ls -l..

%ls -ld..

 

Команда

%cd каталог

- переход в указанный каталог. Без указания каталога - переход в домашний.

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

 

Изучение содержимого файла

Команда

%file имя_файла [имя_файла...]

определяет тип файла путем анализа его содержимого

Определите тип всех файлов вашего домашнего каталога и каталога /tmp.

Расширение файла (часть имени после точки) в Unix не имеет никакого специального значения. Например, для запуска файла требуется не расширение типа.exe, а право на исполнение.

Команда

%cat имя_файла

- выводит содержимое файла на терминал.

%cat /tmp/bash.info

Команда

%more имя_файла

- пейджер (выводит файл постранично, с остановом). Фактически, команда man формирует текст справки и пропускает его через more.

%more /tmp/bash.info

Команда

%tail [-число] имя_файла

выводит последние 10 строк файла или сколько указано.

%tail /tmp/bash.info

%tail -2 /tmp/bash.info

Команда

%head [-число] имя_файла

выводит первые 10 строк файла или сколько указано.

%head /tmp/bash.info

%head -2 /tmp/bash.info

Команда

%od имя_файла

выводит файл в восьмеричном виде. Ключи:

-Nчисло - вывести только указанное число первых байт,

-jчисло - пропустить указанное число первых байт,

-j0xчисло - пропустить указанное число первых байт (число является 16-ричным),

-tx - вывести в шестнадцатеричном виде,

-с - вывести каждый байт в виде символа (непечатные символы отображаются как спецсимволы языка Си: \t,\n,\b,\f,\r,\0, либо как трехзначное 8-ричное число).

%od -N10 -tx /tmp/bash.info

 

Манипулирование файлами

Создание файла

Команда

%touch имя_файла

изменяет время последней модификации файла на текущее. Побочный эффект: если файла нет, он создается с нулевым размером.

%>имя_файла

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

 

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

%cp файл-источник файл-или-каталог-приемник

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

%cp /tmp/bash.info b.txt

%cp b.txt z

%ls -l

%cp b.txt tmp

%ls –l tmp

UNIX расчитана на профессиональных пользователей. Предупреждений по поводу удаления файлов не выводится.

Рекурсивное копирование каталога в другой каталог

%cp -R каталог-источник каталог-приемник

%cp -R tmp dir

%ls -l

%ls -l dir

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

%mv файл-или-каталог-источник файл-или-каталог-приемник

%mv z y

%ls

%mv y dir

%ls

%ls dir

%mv dir ddd

%ls

%ls ddd

Символические связи

Символическая связь - особый тип файла, содержащий имя другого файла (в листинге ls -l такие файлы обозначаются буквой l в первой колонке). Чтение-запись в файл-связь на самом деле приводят к чтению-записи в файл, на который он ссылается.

Создание символической связи:

%ln -s сущетсвующий_файл файл_связь

(Файл с именем файл_связь не должен существовать.)

 

%ln -s b.txt c.txt

%ls -l

(внимание на файл c.txt и его размер: 5 - это число символов в имени "b.txt")

%more c.txt

Жесткие связи

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

%ln сущетсвующее_имя_файла новое_имя_файла

%ln b.txt d.txt

%ls -l

Файлы b.txt и d.txt абсолютно равноправны, т.к. это два разных имени одного и того же физического файла.

%touch d.txt

%ls -l b.txt d.txt

(внимание на время последней модификации у обоих файлов)

%ls -i b.txt d.txt

(выводит номера индексных дескрипторов - видим, что это один и тот же файл)

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

% rm имя_файла

- удаляет файл, но не к;

% rmdir имя_каталога

- удаляет каталог, только если он пуст;

%rm -r имя_каталога

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

% rm -rf имя_каталога- удаляет каталог рекурсивно и молча.

%ls ddd

%rm ddd/y

%ls ddd

%rm ddd

%rmdir ddd

%rm -r ddd

%ls -l

%rm c.txt

%ls -l b.txt d.txt

%rm d.txt

%rm a b

%ls -l

Удаление файла на самом деле представляет собой уменьшение на 1 счетчика его имен в индексном дескрипторе; соответствующий системный вызов называется unlink(2). Физически файл удаляется системой если он закрыт и если счетчик имен равен нулю. Это свойство используется программистами при создании временных файлов: после создания файла функцией open сразу же вызывается unlink, сбрасывающий счетчик имен в 0. Пока файл открыт, его можно использовать (через файловую переменную, возвращенную функцией open; имени у файла уже нет). После вызова close файл автоматически уничтожается.

Что представляют собой команды UNIX?

Большинство команд представляют собой программы, находящиеся в каталоге /usr/bin. Чтобы выяснить, что понимает шелл под той или иной командой, используйте команду type. Шелл либо укажет путь к исполняемому файлу, либо сообщит, что это - его встроенная команда.

%type ls

%type rm

%type cd

%type type

%type cat

%type od

%type head

%type pwd

%type ln

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

%which ls

%which qwerty

%which cd

 

3.Задание:

Сценарии (скрипт) bash

1. Напишите сценарий, проверяющий имя текущего каталога и выводящий сообщение об ошибке, если оно короче пяти символов.

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

3. Напишите сценарий, выводящий посекундно в цикле имена файлов текущего каталога и их порядковый номер.

4. Напишите сценарий, который генерирует тысячу файлов 1.txt …. 1000.txt, и в каждый файл записывает подряд 100 чисел N, где N = порядковый номер файла.

 

Работа с файловой системой

1. Создайте пустой файл и сожмите его gzip.

2. Создайте небольшой каталог testarch с файлами в домашнем каталоге. Выполните резервное копирование этого каталога командой rsync. Создайте в каталоге testarch новый файл newfile.

4.Содержание отчета:

1. Цель работы.

2. Краткое описание теории

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

4. Сделать выводы по работе.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: