72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
# 07 — Набор команд (Command Set)
|
||
|
||
## 1. Базовые правила
|
||
|
||
- Команды регистрируются в CMC через `register(name, func, desc)`.
|
||
- Аргументы — таблица строк после парсинга `gmatch("%S+")`.
|
||
- Вывод — через `print(text)` (цвет текущий) или `printerror(text)`.
|
||
- Ошибки возвращаются как `error("msg")` — перехватываются `pcall`.
|
||
|
||
## 2. Обязательные команды (минимум v2.0)
|
||
|
||
### `ls [path]`
|
||
|
||
- Выводит список имён в cwd (или `path`).
|
||
- Без `-l` — только имена, по одному на строку.
|
||
|
||
### `ls -l [path]`
|
||
|
||
- Длинный формат: `type mode uid gid size mtime name`.
|
||
- Пример: `d rwxr-xr-x 0 0 4096 1712345678 bin`
|
||
|
||
### `ls -la [path]`
|
||
|
||
- То же, что `-l`, плюс скрытые файлы (начинающиеся с `.`).
|
||
|
||
### `cat path`
|
||
|
||
- Выводит содержимое файла (распакованное).
|
||
- При ошибке (нет прав, нет файла) — `printerror`.
|
||
|
||
### `cd [path]`
|
||
|
||
- Меняет cwd сессии.
|
||
- MMC проверяет право `x` на каталоге.
|
||
- `cd` без аргумента → `$HOME` пользователя.
|
||
|
||
## 3. Выходной формат `ls -l`
|
||
|
||
```
|
||
type perms uid gid size mtime name
|
||
f rw-r--r-- 100 10 1234 1712345678 readme.txt
|
||
d rwxr-xr-x 0 0 0 1712345678 bin
|
||
```
|
||
|
||
## 4. Расширяемость
|
||
|
||
- Новые команды добавляются регистрацией в `commands`.
|
||
- Имя — одно слово, без пробелов.
|
||
- Описание — краткая строка для `help`.
|
||
- Примеры: `login`, `su`, `logout`, `echo`, `clear`, `color`, `help`, `status`.
|
||
|
||
## 5. Примеры ошибок
|
||
|
||
| Ситуация | Сообщение |
|
||
|---|---|
|
||
| Нет файла | `cat: /foo: No such file or directory` |
|
||
| Нет прав | `ls: /secret: Permission denied` |
|
||
| Неизвестная команда | `Error: Unknown command. Type 'help' for list.` |
|
||
|
||
## 6. Совместимость с прототипом
|
||
|
||
Текущий `AtlasOS.lua` уже реализует `help`, `echo`, `clear`, `color`, `status`.
|
||
Новые команды (`ls*`, `cat`, `cd`) добавляются по той же схеме:
|
||
|
||
```lua
|
||
register_command("ls", function(args) ... end, "List directory")
|
||
```
|
||
|
||
---
|
||
|
||
**Конец комплекта документации v2.0**
|