TempOS — надёжная система для надёжных терминалов
+++ TempOS 107.05 LTS - стабильный выпуск с долгосрочной поддержкой +++ Репозиторий пакетов: tos-service.online/tempos/repo +++ Пароль root генерируется каждый раз после переустановки - не записывайте его на стикерах! +++ Новая версия интерпретатора tsh: циклы for и условия if/else +++

Документация TempOS 107.05 LTS

Содержание: Оболочка tsh | Встроенные команды | Файлы | Пользователи | Система | Сценарии .run

Оболочка tsh

Приглашение имеет вид пользователь@хост:каталог$. У root вместо $ стоит #, а ~ означает домашний каталог. Аргументы с пробелами берутся в двойные кавычки.

ЗаписьДействие
cmd1 ; cmd2Выполнить команды по очереди.
cmd1 && cmd2Выполнить вторую команду, только если первая завершилась успешно.
cmd > fileЗаписать вывод команды в файл (перезаписать).
cmd >> fileДописать вывод команды в конец файла.
./programЗапустить файл из текущего каталога. Нужно право на выполнение.

Обычная команда ищется в /bin и /usr/bin. Если удалить файл программы, команда перестанет работать.

Встроенные команды

КомандаОписание
helpСписок встроенных команд и программ из PATH.
cd [каталог]Сменить каталог. Без аргумента - домашний каталог.
pwdПоказать текущий каталог.
echo текстВывести текст.
historyПоследние 50 команд.
exit, logoutВернуться к предыдущему пользователю или закрыть терминал.

Работа с файлами

КомандаОписание
ls [-l] [-a] [путь...]Содержимое каталога. -l - подробно, -a - со скрытыми файлами.
cat файл...Вывести содержимое файлов.
touch файл...Создать пустой файл.
mkdir [-p] каталог...Создать каталог. -p - вместе с родительскими.
rmdir каталог...Удалить пустой каталог.
rm [-r] [-f] путь...Удалить файлы. -r - каталоги целиком, -f - без ошибок.
cp [-r] откуда кудаСкопировать файл или каталог.
mv откуда кудаПереместить или переименовать.
chmod [-R] режим файл...Права: 755, 644 или u+x, go-w, a=r.
chown [-R] владелец[:группа] файл...Сменить владельца. Только root.
nano файлОткрыть файл в текстовом редакторе.

Пользователи и права

КомандаОписание
whoamiТекущий пользователь.
id [пользователь]UID, GID и группы.
groups [пользователь]Группы пользователя.
su [-] [пользователь]Войти под другим пользователем. Требует пароль root.
sudo командаВыполнить команду от имени root. Требует пароль root.
passwd [пользователь]Сменить пароль.
useradd имяСоздать пользователя. Только root.
userdel [-r] имяУдалить пользователя. -r - вместе с домашним каталогом.
usermod [-a] -G группа имяДобавить пользователя в группы.
Перенаправление выполняется от имени текущего пользователя, поэтому sudo echo x > /etc/hostname не сработает. Используйте sudo nano /etc/hostname или sudo hostname имя.

Система и сеть

КомандаОписание
uname [-a|-s|-n|-r|-m]Сведения о системе.
hostname [имя]Показать или сменить имя хоста (смена - только root).
ifconfigСетевые интерфейсы и IP-адрес.
ping адресПроверить связь с другим терминалом.
clearОчистить экран.
rebootПерезагрузка. Только root.
apt list [--installed]Список пакетов.
apt search словоПоиск пакета.
apt show пакетСведения о пакете.
apt install пакет...Установить пакет. Только root.
apt remove пакет...Удалить пакет. Только root.
apt update, apt upgradeОбновить списки пакетов.
neofetchСведения о системе с логотипом (пакет neofetch).

Сценарии .run

Запуск

  • run file.run — нужно расширение .run и право на чтение.
  • ./file — нужно право на выполнение (chmod +x file), расширение любое.
  • Сценарий в /bin или /usr/bin вызывается по имени, как обычная команда.

Общие правила

  • Одна инструкция на строку, пробелы по краям обрезаются, пустые строки пропускаются.
  • Первая строка вида #!... игнорируется.
  • Ключевые слова можно писать в любом регистре.

Комментарии

rem текст
:: текст
# текст

Переменные

set NAME=value
set GREETING="hello world"
echo %GREETING%, %USER%
  • Имя: латинские буквы, цифры и _, не с цифры. Регистр не важен.
  • %NAME% подставляется в любой строке. Неизвестная переменная заменяется пустой строкой.
  • Встроенные: %0% (путь к сценарию), %USER%, %HOME%, %HOSTNAME%, %ERRORLEVEL% (0 или 1 после каждой команды).

Условия

if %USER% == root
    echo admin
else
    echo not admin
endif

Операторы == и !=, сравнение строк без учёта регистра. else необязателен.

Циклы

for N in (1, 2, "a, b")
    echo item %N%
endfor

Ограничения

ПараметрЗначение
Вложенность блоков и сценариев8
Значений в одном цикле100
Шагов за запуск1000
Объём вывода16384 символа
В сценариях нельзя использовать ping, nano, clear, passwd, reboot, exit, su и sudo.

Пример

#!/usr/bin/run
rem Отчёт о системе
set REPORT=%HOME%/report.txt
echo "Host: %HOSTNAME%" > %REPORT%
for DIR in (/etc, /tmp)
    ls -l %DIR% >> %REPORT%
endfor
if %ERRORLEVEL% == 0
    echo "Отчёт сохранён в %REPORT%"
endif