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

Терминальный ввод/вывод

Чтение из stdin и запись в stdout/stderr для CLI-приложений.

Этот модуль работает только в контексте терминала. Его нельзя использовать из обычных функций — только из процессов, работающих на Terminal Host.
local io = require("io")

Запись строк в stdout без перевода строки:

local ok, err = io.write("text", "more")
ПараметрТипОписание
...anyПеременное количество значений для записи (приводятся к строке)

Возвращает: boolean, error

Запись значений в stdout с табуляцией между ними и переводом строки в конце:

io.print("value1", "value2", 123)
ПараметрТипОписание
...anyПеременное количество значений для вывода

Возвращает: boolean, error

Запись значений в stderr с табуляцией между ними и переводом строки в конце:

io.eprint("Error:", message)
ПараметрТипОписание
...anyПеременное количество значений для вывода

Возвращает: boolean, error

Прочитать до n байт из stdin:

local data, err = io.read(1024)
ПараметрТипОписание
nintegerКоличество байт для чтения (по умолчанию: 1024, значения <= 0 становятся 1024)

Возвращает: string, error

Прочитать строку из stdin до символа новой строки:

local line, err = io.readline()

Возвращает: string, error

Включить или отключить raw-режим терминала (отключает построчную буферизацию и эхо):

local ok, err = io.raw(true) -- включить
local ok, err = io.raw(false) -- отключить
ПараметрТипОписание
enablebooleantrue для включения, false для отключения (по умолчанию: true)

Возвращает: boolean, error

Raw-режим использует подсчёт ссылок — каждому io.raw(true) должен соответствовать io.raw(false). Терминал автоматически возвращается в нормальный режим при выходе процесса.

Сбросить буфер stdout:

local ok, err = io.flush()

Возвращает: boolean, error

Получить аргументы командной строки:

local args = io.args()

Возвращает: string[]

УсловиеKindПовторяемо
Нет терминального контекстаerrors.UNAVAILABLEнет
Ошибка операции записиerrors.INTERNALнет
Ошибка операции чтенияerrors.INTERNALнет
Ошибка операции сбросаerrors.INTERNALнет

См. Обработка ошибок для работы с ошибками.