Третья часть мануала по 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 — вот тут и потребуется пайпинг.
В любом случае, эта штука является невостребованной, так как она недоделана. Вероятно, в будущем этот недостаток будет устранён, а пока просто запомним три оператора.
Список терминов:
монтирование— процесс создания ссылки на устройствоточка монтирования— название ссылки на устройствометка— пользовательское имя для накопителя
Что же, всё обещанное сделано. В следующей части я расскажу об остальных программах, которые так или иначе помогают в программировании. Жду пожеланий и вопросов.