Информационные системы ускорителей

Лабораторная работа №1
Unix-shell.Построение дерева каталогов и файлов


Введение

Файлы, каталоги, файловая система - дерево каталогов. Практически вся информация на компьютерах представлена в виде файлов. Файл является основной единицей хранения данных и программ обрабатывающих эти данные. Файл - это именованная (т.е. снабженная именем) область внешней памяти. Обычно файлы временно или постоянно хранятся во внешней памяти компьютера - на дисках, магнитных лентах, "флэшках" и т.д. Кроме имени файлы характеризуются целым рядом атрибутов, таких как размер, время создания и т.п. Операционная система и прикладные программы (приложения) получают доступ к файлу по его имени. Максимальная длина имени файла или каталога в Unix 256 символов, включая расширение, имя и расширение разделяются точкой. Расширение указывает на вид информации или на приложение, которым может быть открыт этот файл, например myfile.txt - текстовый файл, myfile.doc - документ MS Word и т.д.


Дерево каталогов

Файлы хранятся в системе вложенных каталогов (директорий) и организуются в файловую систему. Таким образом, файловой системой называется совокупность файлов и каталогов, организованных в древовидную структуру. Ее можно представить как перевернутое вверх корнем дерево (более точный образ - куст у которого от корня идет сразу множество ветвей, а не один ствол). Узлами, из которых расходятся "ветви", являются каталоги, восходящие, в конечном счете, к корневому каталогу. Узлам, из которых не происходит дальнейшего ветвления, как правило, соответствуют файлы, хотя это могут быть и пустые каталоги (см. дерево ниже). Обычно мы говорим: "Каталог (директория) содержит файлы" или "Файл находится в каталоге". Но при этом понимаем, что каталог не является областью памяти, собственно вмещающей сами файлы. Каталог лишь содержит список файлов, с указанием их имен и других атрибутов. По сути, каталог - это специализированный файл, назначением которого является хранение списка отнесенных к нему файлов (в том числе и подкаталогов, которые, как и все каталоги - тоже файлы). "Пустая" файловая система состоит только из корневого каталога.




Рабочий каталог. Текущий каталог, абсолютный путь и относительный путь.

Когда мы входим в систему, то попадаем в свой рабочий каталог, он задан для нас системным администратором и сами мы его поменять не можем. В момент входа он является так же текущим каталогом. Текущим мы можем сделать любой существующий каталог, к которому у нас есть доступ. Зачем нужен текущий каталог? Дело в том, что операционная система осуществляет доступ к файлу или каталогу через его путевое имя или, попросту путь. Существуют два вида путей, абсолютные и относительные. Абсолютный путь - это последовательность имен каталогов, которая начинается от корневого каталога и, следуя по дереву файловой системы, заканчивается именем каталога или файла, с которым мы хотим работать. Относительный путь может быть указан от текущего или рабочего каталога, что может оказаться значительно короче и удобней, чем использование абсолютного пути. Когда мы находимся в рабочем каталоге, нам не нужно указывать пути к каталагам и файлам находящимся в нем. К другим каталогам придется указать путь, но не абсолютный, а гораздо более короткий. Но об этом немного позднее, а пока приступим к работе.


Первые вопросы после входа в систему



Команда pwd сообщила, что наш текущий каталог /home/groups/v100/v100-1. Это полный путь от корневого каталога. Читается путь с права на лево, т.е текущий каталог v100-1 является подкаталогом v100, расположенном в каталоге groups, находящемся в home. Выше каталога home только корневой каталог, о чем свидетельствует начальный "/".

Полезная функция. Попробуйте понажимать клавиши "ВВЕРХ" и "ВНИЗ" на клавиатуре, и Вы увидите, что shell запоминает команды, и этими самыми стрелочками их можно перелистывать и, при необходимости редактировать.

Как видно из примера, имена каталогов при написании пути разделяются символом "/", котрорый называется "слэш". Если путь начинается с "/", то это значит, что указан путь от корневого каталога или полный путь.


Создадим каталог и файл




Удалим каталог и файл




Смена текущего каталога

Мы научились создавать и удалять каталоги, теперь научимся в них заходить и выходить обратно. Поскольку наша текущая директория пуста, то каталоги придется создавать снова.



Вот, впринципе, мы и освоили набор команд, позволяющий построить нам дерево каталогов. Создав каталог firstcat, мы можем создать в нем столько каталогов, сколько потребуется, с любой степенью вложенности. Создаем - mkdir, смотрим - ls, меняем текущий каталог - cd, удаляем, если ошиблись - rmdir. Давайте в последний раз удалим наш многострадальный firstcat (кто забыл, отмотайте назад) и приступим к построению дерева каталогов, паралельно изучая новые команды и возможности.


Начинаем строить дерево



Рекомендуем перерисовать построенное дерево на бумагу, чтобы постоянно видеть его перед собой


Одной командой mkdir можно создать сразу несколько каталогов




Несколько команд mkdir с ключом -p и дерево готово




Работаем с относительными путями. Команда cd

Для удобства работы положите лист с нарисованным деревом перед собой. Команду pwd, как Вы наверное уже поняли, в пределах рабочего каталога можно не использовать, так как путь в текущий каталог отражается в приглашении командной строки и начинается с символа "~", обозначающего рабочий или домашний каталог. В каком бы каталоге мы не находились команда cd ~ вернет нас в домашний каталог.

При работе с относительными путями есть один весьма существенный момент. Посмотрите на дерево: если мы движемся от корня, то на каждой развилке обязательно должны указать имя очередного каталога, поскольку каждый каталог разветвляется на несколько, и у каждого есть свое имя. Когда мы движемся к корню мы не указываем имени каталога, поскольку каталог, в который мы можем попасть - единственный, вариантов нет. Поэтому вместо имени указывается ".." (точка,точка).Имена каталогов в путях, даже если это .. разделяются / (слэш).




Создаем текстовый файл редактором vi.











А теперь самостоятельно создайте:

файл papavas2 с текстом:
		"Учится папа за Васю весь год" в каталоге one/new/many
файл papavas3 с текстом:
		"Где это видано, где это слыхано" в каталоге one/old/few
файл papavas4 с текстом:
		"Папа решает, а Вася сдает" в каталоге one/old/many

Защита лабораторной работы

Вас могут спросить: Что делает та или иная команда или какой командой выполняется то или иное действие. Что такое корневая, рабочая(домашняя) и текущая директория. Что такое абсолютный и относительный путь. Могут не только спросить, но и попросить продемонстрировать или на бумаге или на компьютере.


Команды к лабораторной работе №1

pwd	показать текущюю директорию

ls	отобразить содержимое текущей директории

ls -F	отобразить содержимое текущей директории с добавлением
	к именам символов, храктеризующих тип файлов
	
ls dir1	отобразить содержимое директории 'dir1'

mkdir dir1	создать директорию 'dir1'

mkdir dir1 dir2	создать в текущем каталоге сразу две  директории

mkdir -p dir1/dir2	создать дерево каталогов в текущей директории

touch file1	модифицировать дату и время создания файла 'file1',
		при его отсутствии, создать пустой файл с именем 'file1'
		
rm file1	удалить файл с именем 'file1'

rmdir dir1	удалить пустую директорию с именем 'dir1'
		в текущей директории
		
rm -rf dir1	удалить директорию с именем 'dir1'
		и рекурсивно всё её содержимое
		
rm -rf dir1 dir2	удалить две директории и рекурсивно их содержимое

cd dir1	перейти в директорию 'dir1'

cd ..	перейти в директорию уровнем выше

cd ../..	перейти в директорию двумя уровнями выше

cd ~	перейти в рабочую (домашнюю) директорию

cd -	перейти в директорию,
		в которой находились до перехода в текущую директорию
		
tree	показать дерево файлов и директорий для текущей директории

tree dir1	показать дерево файлов и директорий для директории 'dir1'