Автор работы: Пользователь скрыл имя, 29 Декабря 2011 в 20:20, курс лекций
Способы организации файловой системы, списки команд и т.д. ОС Unix
выводит последние
10 строк файла или сколько
%tail b.txt
%tail -2 b.txt
Команда
%head [-число] имя_файла
выводит первые 10 строк файла или сколько указано.
%head b.txt
%head -2 b.txt
Команда
%od имя_файла
выводит файл в восьмеричном виде. Ключи:
-Nчисло - вывести только указанное число первых байт,
-jчисло - пропустить указанное число первых байт,
-j0xчисло - пропустить указанное число первых байт (число является 16-ричным),
-tx - вывести в шестнадцатеричном виде,
-с - вывести каждый байт в виде символа (непечатные символы отображаются как спецсимволы языка Си: \t,\n,\b,\f,\r,\0, либо как трехзначное 8-ричное число).
%od -N10 tx b.txt
1.4. Манипулирование файлами
Создание файла
Команда
%touch имя_файла
изменяет время последней модификации файла на текущее. Побочный эффект: если файла нет, он создается с нулевым размером.
%>имя_файла
создает файл нулевого размера (буквально: в этот файл перенаправляется вывод из ниоткуда).
%touch a
%>b
%ls -l
Создание каталога
%mkdir dir
%ls -l
Копирование файла в другой файл или каталог
%cp файл-источник файл-или-каталог-приемник
Если файл приемник существует, он будет удален (т.е. копирование производится поверх). Каталог-приемник должен существовать.
%cp b.txt z
%ls -l
UNIX рассчитана на профессиональных пользователей. Предупреждений по поводу удаления файлов не выводится.
Рекурсивное копирование каталога в другой каталог
%cp -R каталог-источник каталог-приемник
%cp -R prog 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
Жесткие связи
В файловой системе UNIX имя файла является указателем на индексный дексриптор, который содержит атрибуты файла и массив адресов дисковых блоков, в которых находятся данные файла. Однако, индексный дексриптор не содержит ссылки на имя файла, следовательно файл может иметь несколько имен. Дексриптор содержит только счетчик числа этих имен, значение которого показывается во второй колонке листинга ls -l.
Создание жесткой связи - это создание еще одного имени, ссылающегося на тот же самый индексный дескриптор:
%ln сущестсвующее_имя_файла новое_имя_файла
%ln b.txt d.txt
%ls -l
(внимание на значение второй колонки для b.txt и d.txt и размер этих файлов, заметьте также время последней модификации)
Файлы 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 файл автоматически уничтожается.
1.5. Что представляют собой команды UNIX?
Большинство команд представляют собой программы, находящиеся в каталоге /usr/bin. Чтобы выяснить, что понимает шелл под той или иной командой, используйте команду type. Шелл либо укажет путь к исполняемому файлу, либо сообщит, что это - его встроенная команда.
%type ls
%type rm
%type cd
%type type
Поиск исполняемого файла производится в каталогах, установленных переменной окружения PATH (переменные окружения будут изучаться в этом курсе позже). Чтобы определить в каком каталоге находится программа, используйте команду which:
%which ls
%which qwerty
(можете увидеть, что содержится у вас в PATH)
%which cd
Оказывается, существует программа /usr/bin/cd, но шелл интерпретирует cd как свою встроенную команду. Дело в том, что все вышесказанное относится к случаю, когда вы вводите команду просто по имени. Если же вы вводите путь к исполняемому файлу (полный или относительный), то шелл никак не интерпретирует имя программы, а запускает конкретный указанный вами файл. То есть
%/usr/bin/cd
запустит именно этот файл, а не встроенную команду шелла. Впрочем, делают они одно и то же.
Завершите сеанс работы
%exit
Введение в Unix
Лабораторный практикум
1. Изучение файловой системы
(продолжение)
Войдите в систему в режиме командной строки.
1.6. Основные каталоги файловой системы Unix-Solaris
Цель: получить представление об общем устройстве дерева фаловой системы Unix и об основных каталогах и их предназначении. Изучение производится на примере ОС Solaris. В других Unix-системах могут быть некоторые непринципиальные отличия.
%ls -l /
Изучите список каталогов верхнего уровня
/etc/
В каталоге /etc содержатся системные конфигурационные файлы. Все эти файлы - текстовые. Пример
/etc/
Сообщение, выводимое при входе в систему:
%more motd
Имя компьютера:
%more nodename
%cd rc2.d
%ls
В каталоге /etc/rc2.d содержатся файлы, исполняемые при загрузке операционной системы. По умолчанию загружается только ядро и его системные процессы. Все остальные сервисы, включая поддержку сети, обслуживание сеансов работы пользователей и проч., запускаются из файлов этого каталога. Содержание и назначение этих файлов изучаются в "Администрировании Unix".
/usr/
В каталоге /usr содержатся команды, утилиты, библиотеки, документы справочника man и т.п. То есть в этом каталоге находится вся "исполняемая" часть Unix, за исключеним ядра. Основные подкаталоги каталога /usr:
/usr/bin
(он же /bin) - команды Unix для обычного пользователя.
/usr/sbin
- команды Unix
для выполнения задач
/usr/ccs/bin
- команды,
необходимые для компиляции и
сборки программного
/usr/lib
- библиотеки: статические и разделяемые.
/usr/include
- заголовочные файлы функций языка С.
/usr/share/man
(он же /usr/man) - документы справочника man.
/usr/openwin
- поддерево системы X-Windows (в исполнении SUN - Open Windows): команды и утилиты, библиотеки, справочник и т.п.
/usr/dt
- поддерево десктопа CDE для X-Windows.
Грубо говоря, X-Windows определяет как вообще работают программы с оконным интерфейсом, каков их протокол взаимодействия с X-сервером. Утилиты X-Windows устанавливают параметры X-сервера: используемые шрифты, геометрию окон, разрешения на подсоединение программ с других компьютеров и т.д.
Десктоп определяет вид пользовательского интерфейса (где находятся кнопки у окон, как они выглядят, как выглядит toolbar и что в нем находится и т.п.). В состав десктопа входят такие приложения как терминал, менеджер файлов, текстовый редактор, калькулятор и т.д.
Для X-Windows разработано несколько десктопов. CDE считается стандартным (он используется в классе 6407).
/usr/local
- поддерево
установки дополнительных
В /usr/local устанавливается ПО общесистемного назначения: компиляторы, дополнительные утилиты, библиотеки. Большие пакеты прикладного характера ставятся обычно в /opt.
Каталог /usr/local по своей структуре копирует основные подкаталоги /usr: bin, lib, man, include.