OpenOS. От дуба до Мастера. Часть пятая.

fingercomp 2015-09-21   4 минуты на чтение

Последняя, пятая часть мастеровления полностью посвящена шеллу и его программам. Переменные окружения, алиасы и с ними связанные команды — я не врал.


Сложность: высокая
75%

Скучность: высокая
75%

Дубовость: для продвинутых
80%


Ключевой частью OpenOS является шелл. Это программа, которая выполняет команды, рисует командную строку, в общем, занимается предоставлением удобства пользователю.

ШЕЛЛ OPENOS

Сразу предупреждаю, что мы не будем рассматривать в данном гайде именно API шелла, только как программу. Из места — в карьер и...

Переменные окружения

Это такие переменные, доступ к которым есть у всех приложений. По умолчанию создаются:

Таким образом, если изменить эти параметры и запустить использующие эти переменные программы, то можно изменять их поведение по собственным нуждам.

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 и скрытых открытых возможностей.

Благодарю за прочтение.