Третья часть мануала по OpenOS, где я расскажу об идее монтирования файловых систем, а затем разбавлю повестью о пайпинге.
Сложность: средне
60%
Скучность: средне
55%
Дубовость: для продвинутых
50%
ФАЙЛОВЫЕ СИСТЕМЫ, ЗАКЛЮЧЕНИЕ. УСТРОЙСТВА И МОНТИРОВАНИЕ
Приступаем к самой сложной штуке в OpenOS — это монтирование файловых систем.
Итак, начнём.
Логика работы
Итак, начнём с того, что каждый накопитель — это устройство. У устройства есть
свой адрес (в формате xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
),
который показывается при наведении мышкой. Устройство имеет
определённую вместимость. Имеет количество свободной и занятой области. И,
наконец, характеризуется наличием метки "Read-Only".
Допустим, это устройство У
имеет адрес Address
, вместимость 2 МБ и занято 0.5 МБ.
Другое устройство Д
имеет адрес sserddA
и такие же характеристики.
В OpenOS выбирается одно основное устройство, которое становится корнем.
У нас /
= У
. Оно имеет все стандартные файлы и папки. Но как перейти на
устройство Д
? Оказывается, в папке /mnt/
собраны ссылки на все устройства.
Именами ссылок являются первые 3 буквы адреса устройства.
Что интересно, даже если У
— корень, ссылка на устройство всё равно будет
в /mnt
. Вот так:
/ Устройство У |┅ |+ mnt | |┅ | |+ Add Устройство У | |+ sse Устройство Д | |┅ |┅
Монтирование
Но что, если если у нас таких устройств — 5, например? Помнить все 5 адресов, пусть даже трёх первых букв, писать длинные пути — не-у-доб-но. Согласитесь?
Поэтому в ОС есть возможность ручного монтирования. То есть, проще говоря,
можно создать ссылку на устройство в любом желаемом месте. Вот только ln
здесь не поможет — это ведь не файл, а совершенно другой раздел. Для этих
целей служит команда mount
. У неё два варианта работы:
mount -a <адрес> <место назначения>
— создаёт ссылку на устройство, адрес которого начинается с<адрес>
, в заданной директории<место назначения>
. При этом указаннной папки не должно быть до этого на диске. После этого в выбранной директории будут все файлы с устройства. Для устройстваД
—mount -a sse /devD/
.mount <путь /mnt/адрес> <место назначения>
— также создаёт ссылку на устройство в месте назначения, только вместо адреса используется путь типа/mnt/адрес
. Для устройстваД
это —mount /mnt/sse /devD/
.
Директория, которая является ссылкой на устройство, наызвается точкой монтирования.
df
Эта команда отобразит все подключённые в данный момент хранилища данных, укажет точку монтирования и состояние. Для нашего компьютера было бы показано следующее:
Filesystem Used Available Use% Mounted on Address 512k 2M 25% / Address 512k 2M 25% /mnt/add sserddA 512k 2M 25% /mnt/sse
Как видите, если у файловой системы несколько точек монтирования, то будет показана информация о каждой из них.
label
Это у нас названия простые и запоминающиеся. В реальности вместо них были бы
эти ужасные длинные непонятные адреса. И чтобы сделать их понятными,
можно повесить метку. Что проще: 835f48a-5df9-eb6a-36cb-6ab452d8f16a
или
Programs
? Думаю, всё же второе.
Чтобы поставить такую метку, воспользуемся командой label
, у которой
опять два варианта работы:
label -a <метка или часть адреса> <метка>
— устанавливает данному диску метку.label <точка монтирования> <метка>
— устанавливает диску по данной точке монтирования метку.
Кстати, если не указывать метку, то выведется информация о текущей.
И ещё, установочная дискета имеет метку openos
, а жёсткий диск с ОС —
OpenOS
по умолчанию.
Информация
При монтировании первым способом можно вместо части адреса ввести метку.
ПАЙПИНГ
Файлы
Простейший пример — перенаправление вывода echo
в файл. Для этого
используется >
.
Смотрите: echo "Hello all!" > hi.all
. Содержимое hi.all
очищается
(или создаётся чистый файл, если его не было), и весь вывод идёт туда.
Таким образом, в файле будет следующее:
Hello all!
Если же необходимо из файла содержимое вывести в команду, используется
команда <
. Вот только примеров такому мне найти не удалось.
Между командами
Другой простейший пример — команда cat
. Если Вы помните, она печатала
содержимое всё подряд, и если его больше высоты экрана, то просто обрезается.
Так вот, чтобы не случалось такого, используется команда more
и пайпинг.
Сразу скажу, как это сделать. more | cat <файл>
. Обратите внимание на |
.
Этот символ обозначает, что весь вывод из правой команды надо перенаправлять
в левую.
Скажу по секрету — тут можно было обойтись даже без пайпинга. more
умеет
сама открывать и читать файлы. Но есть нам нужен не файл, а, например,
какой-нибудь df
— вот тут и потребуется пайпинг.
В любом случае, эта штука является невостребованной, так как она недоделана. Вероятно, в будущем этот недостаток будет устранён, а пока просто запомним три оператора.
Список терминов:
монтирование
— процесс создания ссылки на устройствоточка монтирования
— название ссылки на устройствометка
— пользовательское имя для накопителя
Что же, всё обещанное сделано. В следующей части я расскажу об остальных программах, которые так или иначе помогают в программировании. Жду пожеланий и вопросов.