Последняя, пятая часть мастеровления полностью посвящена шеллу и его программам. Переменные окружения, алиасы и с ними связанные команды — я не врал.
Сложность: высокая
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 и скрытых открытых возможностей.
Благодарю за прочтение.