Перейти к содержимому

Fingercomp's Playground

  • записей
    87
  • комментария
    452
  • просмотров
    311 255

OpenOS. От дуба до Мастера. Часть вторая. [|··]

Fingercomp

7 631 просмотр

И снова здраствуйте. Я продолжаю описывать нелёгкий путь от дуба до Мастера в OpenOS.



Начать предлагаю с вопросов, которые, к счастью, есть.
Начинает у нас ЛесхаИнц (@@LeshaInc). И его вопрос:

>>Что же, приветствуем Вас на борту этой замечательнейшей операционки, работающая на чистом Луа. Основные принципы:
Что за глупости? OpenOS написана на чистом луа? Нет, друг мой, это не чистый луа.
Используются компоненты - component.gpu, component.monitor итд. А еще есть computer в _G... А эти компоненты - написаны на scala + eris либа, для lua. Так что не нужно вводить в заблуждения юных странников, которые только начинают ехать по пути "OpenOS".

Бедный человек не разделяет, что принадлежит самой ОС, а что — предоставляемому АПИ компонентов. ОС принадлежит всё то, что написано именно для этой системы. То есть, например, в EEPROM этим кодом просто так Вы воспользоваться не сможете. АПИ компонентов предоставляет сам мод. И независимо от того, стоит ли на компьютере OpenOS, не стоит ли — АПИ мода всё равно присутствует, следовательно, частью OpenOS считать это ошибочно.
Запомнил? Молодец. И больше не задавай глупых вопросов.


Сложность: средне
40%

Скучность: средне
35%

Дубовость: для начинающих
30%




Как и обещал, в этой части я поговорю о структуре ФС уже самой OpenOS и о первых инструментах, предоставляемых системой.

 



СТРУКТУРА ФАЙЛОВОЙ СИСТЕМЫ OPENOS

Файловая система OpenOS чрезвычайно похожа на оную из *nix. Сразу же после установки системы, у Вас появляются следующие папки:
/            // Корень|+ bin        // здесь хранятся программы самой ОС|+ boot       // здесь хранится загрузочный код ОС|+ etc        // здесь хранятся файлы конфигурации| || + rc.d     // папка скрипта-демона|+ lib        // здесь находятся бибилиотеки самой ОС|+ usr        // все пользовательские файлы  |  + man      // папка файлов справочной системы  |  + misc     // папка различных файлов


Допустим, мы хотим узнать, какие программы есть в OpenOS. Для этого заходим в директорию /bin/ (см. часть первую, если не помните, как) и смотрим содержимое через ls. Поразившись количеством программ, можно выходить из директории. К ним мы вернёмся позже.

 

mkdir
Но вот, например, вам захотелось страстно создать в корне папку /kotiki/. Для этих целей присутствует утилита mkdir <имя папки>. В нашем случае нужно ввести mkdir /kotiki/. Обратите внимание, что не рекомендуются в названии папок пробелы и спецсимволы (могут возникнуть сложности с программами, но если Вы решились так делать, то заключите путь в "кавычки"), и называть папку так же, как файл на диске, не следует.
К слову, если нужно сделать две папки, можно обойтись одной командой: mkdir <имя папки> [имя второй папки] [имя третьей папки] [...]. Тогда достаточно прописать, например, mkdir /kotiki/ /sobaki/, чтобы создать папку "kotiki" и "sobaki".
К слову, сразу же после установки, пропишите команду mkdir /usr/bin/ /usr/lib. Это понадобится.

 

rm
Предположим, что вы по ошибке прописали mkdir /koriki/. Возникает вопрос — как удалить папку? Для этого предназначена команда rm <имя файла или папки> [имя второго файла или папки] [...]. Нужно удалить только одну папку, потому пишем: rm /koriki/ — и создаём правильную папку. Напомню, что rm может удалять ещё и файлы.

 

mv
Что, если Вам хочется не удалять всю папку, а только переименовать её? Или перетащить с диска на дискету? Воспользуйтесь командой mv <имя файла/папки> <место назначения>. Например, чтобы переименовать /koriki/ в обыкновенных котиков, пропишем mv /koriki/ /kotiki/

 

cp
Куда же мы без копирования! Как в любой уважающей себя ОС, здесь тоже есть такая функция. cp <путь к копируемому файлу> <путь в место вставки файла>. Например, cp ../cat1/ ./.

 

edit
Но довольно возни с папками — мы пришли программировать! А не в папках копаться. Для создания и/или редактирования файла нужно прописать edit <имя файла>. Откроется редактор файлов. Управление такое же, как, например, в блокноте. Стрелочками перемещаться, ввод стандартный. Вот только для управления файлом вместо меню используются "горячие клавиши":

  • [Ctrl] + — сохранение файла
  • [Ctrl] + [w] — закрытие файла (файл НЕ сохраняется!!)
  • [Ctrl] + [Del] — удаление строки
  • [Ctrl] + [f] — поиск
  • [F3] или [Ctrl] + [g] — поиск следующего совпадения


Внизу справа отображается текущая позиция курсора.

 

Запуск программ. PATH
Чтобы запустить свою программу, пропишите путь до неё (например, myfirstprogram.lua). Если у файла расширение .lua, то писать его необязательно. Кроме того, если программа находится в /bin или /usr/bin (Ваши программы советую сохранять в последнюю папку), то вызвать их можно, просто прописав название программы без расширения, причём в любой папке. Именно так и работают стандартные программы (например, cd, mkdir и др.)
То есть, при попытке запустить файл какой-либо, сначала обыскиваются директории в PATH (это /bin и /usr/bin) и, если программы такой не найдено, система пытается запустить файл в текущей директории.
Если у Вас в текущей директории есть файл rm.lua, то, чтобы не запускать стандартную утилиту, пропишите ./rm.lua. Если указана директория в пути, то поиск в PATH пропускается.

 


ДРУГИЕ СТАНДАРТНЫЕ ПРОГРАММЫ OPENOS

man. Справочная система
На этой команде я мог бы и закончить описание системы, так как для большинства стандартных программ есть описание в man. man — это команда, которая открывает файл справочной системы для чтения. Начните с man man. Вам расскажется о программе. А теперь пропишите команду ls /usr/man/. Вы увидите список файлов справочной системы. Например, resolution. Для просмотра файла пропишите man <название файла справочной системы>. В данном случае — man resolution. Для каждой изученной ранее команды прочитайте справочную информацию, чтобы Вы могли использовать их на полную силу.

 

cat <имя файла>
Простой просмотр содержимого файла. Нет возможности управления курсором, если содержимое больше высоты экрана — всё, ничего не поделать (на самом деле, это не так, с помощью more можно сделать это удобным, но для использования потребуется пайпинг, о котором я поговорю в другой раз).

 

clear
Очистка терминала.

 

date
Выводит текущие время и дату.

 

echo
Просто выводит данную строку на экран (echo [строка]) Строку желательно заключить в "кавычки", чтобы избежать разных проблем. В простом виде бессмысленна, нужна опять-таки для пайпинга.

 

install
Скопировать полностью содержимое всей файловой системы на другой накопитель, вместе со всеми Вашими файлами.

 

ln <путь к файлу> [место назначения]
Создать сиволическую ссылку на данный файл. Если место назначение не указано, то в текущую директорию вставляется ссылка с именем файла. К слову, эти ссылки виртуальные и не хранятся на файловой системе. После перезагрузки компьюетра они стираются. Таким образом, они могут создаваться даже на системах только для чтения!

 

pwd
Выводит на экран текущую рабочую директорию. Полезно, опять же, при пайпинге.

 

reboot
Перезагрузка системы.

 

shutdown
Остановка системы.

 

resolution
Изменение расширения экрана. Синтаксис: resolution <X> <Y>. Максимальное разрешение зависит от монитора и видеокарты.

 

uptime
Время работы системы

 

which <файл>
Выводит путь до указанной программы или сиволической ссылки. Например, which rm выведет /bin/rm.lua.

 

yes [строка]
Бесконечно повторяет заданную строку, или "y", если не задано. Сомнительная полезность.

Списка терминов тут не будет, так как придётся копировать информацию из статьи. Всё, что было изучено — это программы и структура ОС.

Да и на самом деле, я рассмотрел далеко не все программы и возможности, имеющиеся в OpenOS. В следующей части — о пайпинге и устройствах, а также о программах, с ними связанных, так что не пропустите, если Вам интересно.

 


  • Нравится 2


7 комментариев


Рекомендуемые комментарии

>>братите внимание, что в названии папки не должно быть пробелов и спецсимволов

Они могут быть, но не рекомендуются. Мы можем создать папку "moi kotiki ^^":

mkdir "moi kotiki ^^"

Поделиться комментарием


Ссылка на комментарий

>>братите внимание, что в названии папки не должно быть пробелов и спецсимволов

Они могут быть, но не рекомендуются. Мы можем создать папку "moi kotiki ^^":

mkdir "moi kotiki ^^"

Да, спасибо, поправил. В любом случае, вполне могут быть программы, которые неправильно будут работать с такими папками.

Поделиться комментарием


Ссылка на комментарий

Тогда достаточно прописать mkdir /kotiki/ /kotiki/moy/

Подпапки прекрасно создаются, следовательно противоречие с

Пропишите команду mkdir /usr/bin/ /usr/lib

 

rm /koriki можно не использовать, а сделать rename, т. е. mv /koriki /kotiki

Поделиться комментарием


Ссылка на комментарий

Тогда достаточно прописать mkdir /kotiki/ /kotiki/moy/

Подпапки прекрасно создаются, следовательно противоречие с

Пропишите команду mkdir /usr/bin/ /usr/lib

А почему у меня не создаются? Вина эмулятора?.. ОК, поправлю.

 

rm /koriki можно не использовать, а сделать rename, т. е. mv /koriki /kotiki

Да, можно и так. Но мне нужен был пример именно для `rm`.


Обновил примеры для четырёх команд.

Поделиться комментарием


Ссылка на комментарий
4 часа назад, Hemou_ сказал:

А как например напрямую открыть файл через function ?

 

Из скрипта программы?

local configPath = "/etc/program.cfg"
local f = io.open(configPath, "r")
local cfg = f:read("*a")
f:close()

local logPath = "/tmp/program.log"
local log = io.open(logPath, "w")
log:write("[01:01:01] Program started!\n")
log:write("[01:01:10] Program stopped!\n")
log:close()

 

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...