- •«Операционные системы.Командный интерфейс» конспект лекций Тема 1. Введение. Содержание курса
- •Тема 2. Классификация режимов работы ос
- •Диалоговый пакетный
- •Тема 3. Виды нтерфейсов пользователя ос unix
- •Тема 4. Обобщенные принцпы построения современных ос
- •Тема 5. Состав ос unix
- •Тема 6. Среда для работы пользователя
- •Тема 7. Регистрация пользователя в системе
- •Тема 8. Группа коммуникационных команд
- •Тема 9. Группа вспомогательных команд
- •Тема 10. Перенаправление ввода-вывода
- •Файловая система unix
- •Тема 11. Файлы unix
- •Тема 12. Генерация имен файлов
- •Тема 13. Структура системы каталогов unix
- •Тема 14. Управление каталогами в unix
- •Тема 15. Команды поиска файлов в системе каталогов
- •Тема 16. Управление файлами
- •Тема 17. Управление правами доступа к файлам и каталогам
- •Здесь файл fil1.C, владельцем которого является пользова-
- •Тема 18. Конвееры и фильтры
- •Тема 19. Создание и редактирование текстовых файлов
- •Команды удаления текста
- •Введение в shell- программирование
- •Тема 20. Операторы – команды
- •В unix при написании операторов важное значение отводится
- •Тема 21. Управление локальными переменными
- •Тема 22. Подстановка значений переменных
- •Тема 23. Экспортирование локальных переменных в среду shell
- •Тема 24. Проверка условий
- •2. Сравнение числовых значений:
- •3. Сравнение строк:
- •If список_команд1
- •Тема 25. Построение циклов
- •Тема 26. Управление процессами в unix
- •Тема 27. Создание фоновых процессов
- •Тема 28. Управление приоритетами
- •Тема 29. Завершение процессов
- •Тема 30. Перехватывание сигналов
- •Тема 31. Сетевые средства unix
Тема 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.
