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
- list = ls
- move = mv
- rename = mv
- copy = cp
- del = rm
- md = mkdir
- cls = clear
- less = more
- rs = redstone
- view = edit -r
- help = man
- ? = man
- 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]. Суть её проста и огромна — если Вы ввели часть пути, то нажатие ТАБа дополнит до первого совпадения. Ещё одно нажатие — следующее совпадение и т. д.
Удивительно, но мы, наконец-то, рассмотрели все стандартные утилиты и принципы работы (пишите в commentsStart, если это не так). Потому я закрываю цикл "OpenOS. От дуба до Мастера". В будущем будут другие записи, которые, вероятно, рассмотрят вопрос OpenOS в плане предоставляемых АПИ и скрытых открытых возможностей.
Благодарю за прочтение.
- 1
0 комментариев
Рекомендуемые комментарии
Нет комментариев для отображения