Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции_ОСС.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
476.16 Кб
Скачать

Тема 16. Управление файлами

sort - алфавитная и числовая сортировка файлов или строк файлов; режим сортировки определяется ключами.

Команда многофункциональная, предусматривает много режимов сортировки. Неполные возможности команды:

$sort [-k номер-поля-в-строке] [список-файлов]

-d - по алфавиту (или по умолчанию)

-n - числовая

-u - исключает повторяющиеся строки и т.д..

Примеры:

$sort [*] текст вводится со стандартного устройства ввода (0)

mmm

bbbb

aaaa

<Ctrl.D>

'''''''''''''''''''''

aaaa

bbbb

mmm

''''''''''''''''''''

$sort<filt то же, но текст вводится из файла filt

$who>filwho

$sort -n 5 filwho cортировка по началу сеансов работы пользователей.

touch - замена времени модификации на текущее, если файл не существует, то создается новый пустой файл

touch [-k] имя-файла

Команда может использоваться для создания новых пустых файлов.

Пример:

$touch fil

$ls -l

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

..................0 10:12 fil

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Следующая команда позволяет выполнить

подсчет количества строк (-l), слов (-w), или символов (-c) в указанных файлах:

wc [-lwc] список_файлов

Ключи l, w, c могут употребляться в любых комбинациях и

в любом порядке, по умолчанию - lwc. Если не указано имя файла,

то команда обрабатывает текст, введенный со стандартного ввода.

$ wc f.ddd

””””””””””””””””””””””

3 5 31 f.ddd

””””””””””””””””””””””

$

В примере файл f.ddd содержит 3 строки, 5 слов и 31 символ.

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

$ > fil.1

$ ls -l fil.1

”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””

-rw-rw-rw- 1 lev user1 0 Mar 19 18:17 fil.1

”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””

$

Смысл команды заключается в переадресации в fil.1 пустого

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

Наиболее часто используемая команда для обработки файлов:

cat [-ключи] [входной_файл1[ входной_файл2 ...]]

- слияние и вывод файлов на стандартное устройство вывода(конкатенация файлов).

Команда богата своими функциональными возможностями даже

без использования ключей. Рассмотрим наиболее полезные из этих

возможностей, используя два пустых файла fil.1 и fil.2 .

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

$>fil.1

$>fil.2

$ cat > f в файл f помещается текст, набираемый

text пользователем на клавиатуре терминала [0].

<Ctrl-D>

$ ls

”””””

f

fil.1

fil.2

”””””

$ cat f > fil.1 содержимое файла f копируется в

$ cat fil.1 файл fil.1, оставаясь также в f

”””””

text

”””””

$ cat f fil.1 > fil.2 два файла: f и fil.1 сливаются в один fil.2

$ cat fil.2

”””””

text

text

”””””

$ cat f fil.1 >> fil.2 к содержимому fil.2 добавляется fil.1 и f

$ cat f fil.2

”””””

text

text

text

text

text

”””””

Команда копирования файлов:

cp [-k] вх_файл_1 [вх_файл_2 [... вх_файл_n]] вых_файл

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

1-й: Если вых_файл - обычный файл, то вх_файл может быть

только один; в этом случае содержимое вх_файла копируется

в вых_файл. Если вых_файл существовал, то его содержимое

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

атрибуты копируемого.

2-й: Если вых_файл - каталог, то в него последовательно ко-

пируются все указанные вх_файлы со своими атрибутами и

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

Примеры.

$cd

$ cp fil.c FIL.c

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

$ mkdir petr

$ mkdir lev1

$ cp fil.c lev1/prog.c

В том и другом случаях входной файл fil.c сохраняется в

исходном текущем каталоге.

$ cp fil.c FIL.c lev1/prog.c petr

$ ls petr

”””””

fil.c

FIL.c

prog.c

”””””

$

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

На следующем, не связанном с предыдущим примере вспомним,

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

$ cp f.? fildir

$ cp f.[1-3] fildir

$ cp f.[123] fildir

Во всех трех случаях копирования выполняется одна и та же

операция (входных файлов всего 3).

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

-r - для копирования каталогов.

Отметим еще раз,что команда копирования cp сохраняет неизменными входные (копируемые) файлы.

Схожие с командой cp функции выполняет команда:

mv [-k] вх_ф йл_1 [вх_ф йл_2 [... вх_ф йл_n]] вых_ф йл

- перемещение или переименование файлов

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

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

Пример. Предположим, что существует некоторый подкаталог "a" (относительно текущего) со своими файлами.

$ ls a

””

f1

f2

f3

””

$ mv a/f? <NewLine>

$ ls -l a <NewLine>

”””””””

total 0

”””””””

$ ls <NewLine>

”””

...

f1

f2

f3

”””

$

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

$ mv f1 newf1 - файл переименован в том же текущем каталоге.

Операционная система UNIX предоставляет пользователям воз-

можность использовать общие файлы или использовать один и тот

же файл под разными именами и из разных каталогов. Это обеспе-

чивается за счет установления физических адресных ссылок на об-

щий файл из разных каталогов.

Организация новых ссылок на файл выполняется системой по команде:

ln [-k] вх_файл_1 [вх_файл_2 [... вх_файл_n]] вых_файл

В формате команды заложено 2 режимa ее использования:

1-й: Если вых_файл - обычный файл, то допускается только один

вх_файл_1; в этом случае на него создается ссылка с именем

вых_файл (имя каталога определяется по составу имени вых_-

файл ), после чего к упомянутому файлу можно обращаться по

двум равноправным именам: вх_файл_1 и вых_файл.

Количество ссылок на файл в его описателе увеличивается на 1.

2-й: Если вых_файл - каталог, то в нем создаются элементы,

включающие имена перечисленных в команде входных файлов и

ссылки на них, после чего в каталоге вых_файл можно работать с этими файлами, как с файлами этого каталога.

Рассмотрим использование команды на примерах.

$ pwd

“”””””””””

/ /lev

“”””””””””

$ cd d1 - назначение текущим каталогом d1

$ ls ../d2

'''''''''''''''' - исходное состояние параллельного каталога d2

f21

f22

f23

''''''''''''''''

$ ln ../d2/f21 f1

$ ln ../d2/f21

$ ls

''''''''''''' - новое состояние текущего каталога

f1

f21

''''''''''''

$ cd

$ ln d2/*

$ ls

''''''''''''''' - результирующее состояние текущего каталога d1

f1

f21

f22

f23

'''''''''''''

$

lev

d2

d1

f1

f21

f22

f23

f21

f22

f23

В каталоге d1 созданы элементы, содержащие ссылки на все существующие файлы каталога d2.

Обобщение свойств команды ln:

  • каждая ссылка на входной файл добавляет +1 к числу ссылок входного файла;

  • все связанные файлы имеют совпадающие описатели в каталогах;

  • если изменяется содержимое одного из связанных файлов, то меняется содержимое всех связанных файлов, т.к. связанные файлы разделяют одни и те же данные на диске;

  • если удалить один из связанных файлов, то сокращается число взаимных ссылок на -1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]