OpenOS. От дуба до Мастера. Часть третья.

fingercomp 2015-09-20   3 минуты на чтение

Третья часть мануала по 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. У неё два варианта работы:

  1. mount -a <адрес> <место назначения> — создаёт ссылку на устройство, адрес которого начинается с <адрес>, в заданной директории <место назначения>. При этом указаннной папки не должно быть до этого на диске. После этого в выбранной директории будут все файлы с устройства. Для устройства Дmount -a sse /devD/.
  2. 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, у которой опять два варианта работы:

Кстати, если не указывать метку, то выведется информация о текущей.

И ещё, установочная дискета имеет метку openos, а жёсткий диск с ОС — OpenOS по умолчанию.

Информация

При монтировании первым способом можно вместо части адреса ввести метку.

ПАЙПИНГ

Файлы

Простейший пример — перенаправление вывода echo в файл. Для этого используется >.

Смотрите: echo "Hello all!" > hi.all. Содержимое hi.all очищается (или создаётся чистый файл, если его не было), и весь вывод идёт туда. Таким образом, в файле будет следующее:

Hello all!

Если же необходимо из файла содержимое вывести в команду, используется команда <. Вот только примеров такому мне найти не удалось.

Между командами

Другой простейший пример — команда cat. Если Вы помните, она печатала содержимое всё подряд, и если его больше высоты экрана, то просто обрезается.

Так вот, чтобы не случалось такого, используется команда more и пайпинг.

Сразу скажу, как это сделать. more | cat <файл>. Обратите внимание на |. Этот символ обозначает, что весь вывод из правой команды надо перенаправлять в левую.

Скажу по секрету — тут можно было обойтись даже без пайпинга. more умеет сама открывать и читать файлы. Но есть нам нужен не файл, а, например, какой-нибудь df — вот тут и потребуется пайпинг.

В любом случае, эта штука является невостребованной, так как она недоделана. Вероятно, в будущем этот недостаток будет устранён, а пока просто запомним три оператора.


Список терминов:


Что же, всё обещанное сделано. В следующей части я расскажу об остальных программах, которые так или иначе помогают в программировании. Жду пожеланий и вопросов.