Последняя, пятая часть мастеровления полностью посвящена шеллу и его программам. Переменные окружения, алиасы и с ними связанные команды — я не врал.
Сложность: высокая
75%
Скучность: высокая
75%
Дубовость: для продвинутых
80%
Ключевой частью OpenOS является шелл. Это программа, которая выполняет команды, рисует командную строку, в общем, занимается предоставлением удобства пользователю.
ШЕЛЛ OPENOS
Сразу предупреждаю, что мы не будем рассматривать в данном гайде именно API шелла, только как программу. Из места — в карьер и...
Переменные окружения
Это такие переменные, доступ к которым есть у всех приложений. По умолчанию создаются:
EDITOR
=/bin/edit
. Редактор по умолчанию.HISTSIZE
=10
. Размер истории.HOME
=/home
. Домашняя папка.IFS
=. Символ для разделения.
MANPATH
=/usr/man:.
. Пути к папкам с файлами справочной системы.PAGER
=/bin/more
. Программа типаmore
, осуществляющая функцию постраничного вывода.PATH
=/bin:/usr/bin:/home/bin:.
. Основная переменная системы, указывает папки, где искать программы.PS1
=$PWD#
. Собственно, выражение, которое указывается в интерактивном режиме шелле перед полем команд.PWD
=/
. Текущая рабочая директория, меняется, например, при вызовеcd
.SHELL
=/bin/sh
. Шелл по умолчанию.TMPDIR
=/tmp
. Временная директория.
Таким образом, если изменить эти параметры и запустить использующие эти переменные программы, то можно изменять их поведение по собственным нуждам.
set и unset
Используются для этого две программы: set
и unset
.
У первой следующий синтаксис: set [<название>[=<значение>]]
. Если не указать
никаких аргументов, просто перечислятся все переменные окружения. Если указать
только название, то под определённым порядковым номером запишется название, если
же ему присвоить значение, то возникнет пара <название>=<значение>
. Главное —
не ошибитесь при изменении важных переменных типа PATH
.
Чтобы снять значение переменной, пропишите
unset <название переменной> [название второй переменной] [...]
.
Алиасы
Что такое алиасы? Это создание команды, которая будет вызывать другую. В общем, можно считать это ещё одним типом ссылки. Из стандартных алиасов имеются:
Алиас | Команда | Алиас | Команда |
---|---|---|---|
dir | ls | cls | clear |
list | ls | less | more |
move | mv | rs | redstone |
rename | mv | view | edit -r |
copy | cp | help | man |
del | rm | ? | man |
md | mkdir | cp | cp -i |
В данном перечне при написании команды слева выполняется команда справа.
Это может быть удобно, например, чтобы не писать длинное redstone
,
а только rs
.
alias и unalias
Но не это главное. Вы сами можете устанавливать алиасы!
Первая команда alias
имеет следующий синтаксис:
alias [<Ваш вариант> [исполняемая команда]]
. Если не указать аргументов в
принципе, покажутся все алиасы, если указать только название — значение
алиаса. Устанавливается только при указании значения.
Чтобы снять алиас, достаточно команды unalias
. unalias <название>
.
user*
Приватность данных всё больше и больше волнует смертных человекоподобных существ пользователей ПК. OpenOS не остался исключением, и итог тому — предоставляемым самим модом функции управления пользователями. Тут всё просто. Есть в списке — гуляй, нет в списке — сорри, аксесс денайд.
На основании уже сказанного мной текста, логично предположить, что детальное
описание и использование лежит в глубине документации по API OpenComputers,
и Вы будете правы. Единственная причина, почему я пишу об этом — для операций
управления списком предназначены две простейшие утилиты useradd
и userdel
.
Синтаксис useradd: useradd <игрок>
. Ограничение состоит в том, что игрок
этот должен быть в онлайне. И ограничение это накладывает сам мод,
не система. К сожалению.
Соответственно, логично, что userdel <игрок>
удаляет игрока из списка
пользователей.
Если список пуст, то компьютер доступен всем. Если Вы сначала добавили друга, а затем захотели прописать себя — увы и ах. Так что прописывайте себя первым пользователем, если ещё собираетесь пользоваться компьютером. В любом случае, если Вы совершили олошность, то могут спасти ситуацию администратор или этот счастливый игрок.
* и ?
Обратили внимание на заголовок предыдущей записи? Тогда поговорим о масках.
Нет, совсем не карнавальных.
Представим следующую структуру:
/ |+ clones | |+ clone001 | |+ clone002 | |+ clone003 | |+ clone004 | |+ clone101 | |+ clone110 | |+ colne001 | |+ colne101 | |+ colne |+ clonesEX |+ docsEX |+ docs | |+ doc_future-bak | |+ doc*nature | |+ smth | |+ docFcreature_smth | |+ doc2progsmth | |+ doc.no | |+ totallyNOTa.doc
Задача попроще.
Предположим, мы хотим перетащить в папку clonesEX
все файлы из папки clones
,
при этом копировать папку нельзя. Что делать?
Здесь нам на помощь придут эти самые маски. Конкретнее — *
. Звёздочка в
пути заменяет нуль и более символов. Соответственно, команда:
mv clones/* clonesEX
.
Отмотаем время назад и допустим, что нужно перетащить только файлы с colne
.
Подумав, составляем команду: cp clones/colne* cloneEX
.
К слову, эта команда также захватит с собою colne
. А что, если нам нужны
именно файлы с номерами?.. Звёздочка тут не поможет, поэтому воспользуемся
знаком вопроса (?
). Он заменяет ровно один символ. В нашем случае достаточно
такого: cp clones/colne??? clonesEX
.
Или даже такого: cp clones/colne?* clonesEX
.
По этому принципу перетащим все файлы, начинающиееся с doc
, заканчивающиеся
smth
и имеющего название, отделённого двумя символами от doc
и smth
, из
docs
в docsEX
. Подумайте, какую команду можно использовать.
Ответ: cp docs/doc?*?smth docsEX
.
Ещё вопрос: какие файлы переместятся в результате этой операции?
ТАБ!
Завершим рассказ о шелле потрясающей кавишей TAB
. Суть её проста и
огромна — если Вы ввели часть пути, то нажатие ТАБа дополнит до первого
совпадения. Ещё одно нажатие — следующее совпадение и т. д.
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ СТАНДАРТНЫХ ПРОГРАММ?
Удивительно, но мы, наконец-то, рассмотрели все стандартные утилиты и принципы работы (пишите в комментариях, если это не так). Потому я закрываю цикл "OpenOS. От дуба до Мастера". В будущем будут другие записи, которые, вероятно, рассмотрят вопрос OpenOS в плане предоставляемых API и скрытых открытых возможностей.
Благодарю за прочтение.