|
@@ -93,6 +93,7 @@ Klish имеет два типа плугинов. Плугины для заг
|
|
сборку с --prefix=/usr). Их имена 'kdb-<имя>.so', например
|
|
сборку с --prefix=/usr). Их имена 'kdb-<имя>.so', например
|
|
'/usr/lib/klish/dbs/kdb-libxml2.so'.
|
|
'/usr/lib/klish/dbs/kdb-libxml2.so'.
|
|
|
|
|
|
|
|
+
|
|
## Плугины исполняемых функций
|
|
## Плугины исполняемых функций
|
|
|
|
|
|
Каждая команда klish выполняет какое-либо действие или несколько действий сразу.
|
|
Каждая команда klish выполняет какое-либо действие или несколько действий сразу.
|
|
@@ -115,4 +116,43 @@ Klish умеет получать символы только из плугин
|
|
* script - Исполнение скриптов. Учитывает шебанг (shebang) для определения
|
|
* script - Исполнение скриптов. Учитывает шебанг (shebang) для определения
|
|
какой интерпретатор использовать. Таким образом могут выполняться не только
|
|
какой интерпретатор использовать. Таким образом могут выполняться не только
|
|
shell скрипты, но и скрипты на других интерпретируемых языках. По умолчанию
|
|
shell скрипты, но и скрипты на других интерпретируемых языках. По умолчанию
|
|
-используется интерпретатор shell.
|
|
|
|
|
|
+используется интерпретатор shell.
|
|
|
|
+
|
|
|
|
+Пользователи могут писать свои плугины и использовать собственные символы в
|
|
|
|
+командах klish. Установленные плугины находятся в '/usr/lib/klish/plugins'
|
|
|
|
+(если конфигурировать сборку с --prefix=/usr). Их имена 'kplugin-<имя>.so',
|
|
|
|
+например '/usr/lib/klish/plugins/kplugin-script.so'.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+## Структура XML конфигурации
|
|
|
|
+
|
|
|
|
+Основным способом описания klish команд на сегодняшний день являются XML файлы.
|
|
|
|
+В данном разделе все примеры будут основаны на XML элементах.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+### Области видимости VIEW
|
|
|
|
+
|
|
|
|
+Команды организованы в "области видимости", называемые VIEW. Т.е. каждая команда
|
|
|
|
+принадлежит какому-либо VIEW и в нем определена. При работе в klish всегда
|
|
|
|
+существует "текущий путь". По умолчанию, при запуске klish текущим путем
|
|
|
|
+назначается VIEW с именем "main". Текущий путь определяет какие команды в данный
|
|
|
|
+момент видны оператору. Текущий путь можно менять командами навигации. Например
|
|
|
|
+перейти в "соседний" VIEW, тогда текущим путем станет этот соседний VIEW,
|
|
|
|
+вытеснив старый. Другая возможность - "уйти вглубь", т.е. зайти во вложенный
|
|
|
|
+VIEW. Тогда текущий путь станет двух-уровневым, подобно тому, как можно зайти во
|
|
|
|
+вложенную директорию в файловой системе. Когда текущий путь имеет более одного
|
|
|
|
+уровня, оператору доступны команды самого "глубокого" VIEW, а также команды всех
|
|
|
|
+вышележащих уровней. С помощью команд навигации можно выходить из вложенных
|
|
|
|
+уровней. При смене текущего пути используемая команда навигации определяет будет
|
|
|
|
+ли VIEW текущего пути вытеснен на том же уровне вложенности другим VIEW, либо
|
|
|
|
+новый VIEW станет вложенным и в текущем пути появится еще один уровень. То, как
|
|
|
|
+VIEW определены в XML файлах не влияет на то, может ли VIEW быть вложенным.
|
|
|
|
+
|
|
|
|
+При определении VIEW в XML файлах, одни VIEW могут быть вложены в другие VIEW.
|
|
|
|
+Не надо путать эту вложенность с вложенностью при формировании текущего пути.
|
|
|
|
+VIEW, определенный внутри другого VIEW добавляет свои команды к командам
|
|
|
|
+родительского VIEW, но при этом может адресоваться и отдельно от родительского.
|
|
|
|
+Кроме этого существуют ссылки на VIEW. Объявив такую ссылку внутри VIEW, мы
|
|
|
|
+добавляем команды того VIEW, на который указывает ссылка, к командам текущего
|
|
|
|
+VIEW. Можно определить VIEW со "стандартными" командами и включать ссылку на
|
|
|
|
+этот VIEW в другие VIEW, где требуются эти команды, не переопределяя их заново.
|