OpenComputers 1.6. #2
Продолжаем расследовать обновление 1.6 OpenComputers. На очереди новая OpenOS с крутым функционалом и вкусными плюшками.
Так как изменений много, но они разбросаны, призываем маркеры.
- Новая утилита find
- Прогуливается рекурсивно по файлам, выводя их имена на экран. Можно задать Луа-паттерн аргументом --name для поиска файла нужного.
-
find . --name=".+%.lua"
[*]Утилита grep
- Тот самый монстр, который ищет паттерн в файлах. Идентичный натуральному, но паттерны Луа.
-
grep -rin "hi" .
[*]Утилита head
- Если дать файл, выведет первые 10 строчек. Иначе — возьмёт из трубы (pipe): cat mysuperfile | grep "hi" | head. Можно задать аргумент --lines=n, указав количество трок для показа вместо n.
-
head --lines=42 test
[*]Утилита mktmp
- Создаёт имя во временной директории. По умолчанию — файл, можно указать -d для директории.
-
mktmp -d
[*]Утилита rmdir
- Честно, не самая нужная программа, т. к. rm -r mydir/. Но тем не менее — удаляет директории.
-
rmdir test/
[*]Утилита sleep
- Спит указанное время. Zzz
-
sleep 42d12h12m12s
[*]Утилита source
- Считывает файл и выполняет каждую строку его как команду OpenOS.
-
source /home/.shrc
[*]Утилита time
- Возвращает время исполнения команды.
-
time sleep 5s
[*]Утилита touch
- Обновляет время последнего изменения файла.
-
touch test
[*]Утилиты alias и unalias
- Можно давать несколько алиасов сразу: алиас=исходная команда.
-
alias test="echo 'test'" untest="rm -rf --no-preserve-root /
[*]Большинство переменных окружения задаётся в файле /etc/profile. [*]На старте программы считывается командой source файл /home/.shrc. Вот мой конфиг:
alias l="ls -lh"alias ..="cd .."alias df="df -h"alias grep="grep --color"alias vim="edit" # Просто непривычноresolution 80 25
Библиотеки OpenOS
-
guid
- guid.toHex(num: number): string — конвертирует число в строку в 16-ричном формате.
-
guid.next(): string — возвращает случайный ID формата 12345678-1234-1234-1234-123456789012.
[*]io
- Заменены входы/выходы (io.stdout, ...) для работы с трубами (pipes).
-
io.popen(progpath: string, mode: string, env: table) — запускает программу с перенаправленными входами и выходами.
[*]keyboard
- Клавиши задаются теперь в файле /lib/tools/keyboard_full.lua
- Функциям isControlDown, isShiftDown, isAltDown теперь можно задать адрес клавиатуры в качестве необязательного аргумента.
[*]term
- term.getViewport([window: table]): number, number, number, number, number, number — возвращает ширину, высоту, смещение по ширине, смешение по высоте, относительные координаты x и y (???). Можно задать окно аргументом.
- term.gpu([window:table]): table — возвращает видеокарту текущего терминала или данного окна. В принципе, менее муторная алтернатива component.gpu.
- term.pull([...]): ... — ну прям 99.(9)% равен event.pull. Используется, чтобы курсорчик мигал.
- term.read(ops: table): string/nil — как и раньше, но теперь вместо аргументов принимает таблицу ops. Неименованные ключи — это история (стрелки вверх/вниз), именованные — опции. Ко всему прочему, новая опция nowrap. Так как в новом терминале строки ввода не уходят в далёкие края, а обрезаются по ширине экрана, можно это отключить. term.read({"test1", "test2", nowrap=true, dobreak=false}).
- term.readKeyboard(ops: table) — то же, что и выше, но трубы не будут работать.
- term.drawText(value: string[, wrap: boolean[, window: table]]) — как и term.write, но опять же без труб.
- term.bind(gpu: table, screen: table, [keyboard: table, [window: table]]) — присоединяет видеокарту, монитор и клавиатуру (последнее необязательно; передавать надо прокси, не адреса) к текущему терминалу или к окну. Терминал не обновит автоматически размеры.
- term.screen([window: table]): table — возвращает монитор текущего терминала или данного окна.
-
term.keyboard([window: table]): table — то же, но для клавиатуры.
Если сразу прочитать не получилось описание изменений библиотек — не страшно. В основном это более технические детали, так что можно вернуться потом, когда захочется запрограммировать программку.
Ну а если что-то слишком непонятно — спрашивайте. Поковыряюсь и объясню.
-
1
Войдите, чтобы подписаться
Подписчики
0
5 комментариев
Рекомендуемые комментарии