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

Fingercomp's Playground

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

OpenComputers 1.6. #2

Fingercomp

3 276 просмотров

Продолжаем расследовать обновление 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


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


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

Что за трубы? Где про них почитать?

 

 

Я тоже про трубы не понял кстати.

 

Труба - |

Перенаправляет выход одной программы во вход другой программы.

Например:

 

ls -a / | grep "init"

Здесь выполняется команда ls -a /, все что она должна была писать на экран пишется в grep "init"

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


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

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

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

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

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

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

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