2.4.6 Управление заданиями
Задания в ksh и POSIX Shell имеют тот же смысл что и рассмотренные ранее в csh. Для управления заданиями испльзуется команда jobs . Запущенная без параметров она показвывает список заданий. Иногда возникает необходимость отложить на некоторое время выполнение текущего задания. Этого можно добиться послав сигнал SIGSTOP текущему процессу. Этого можно добиться комбинацией клавиш: Cntrl-Z.
Примечание: предварительно (обычно это ставиться в startup скриптах шеллов) должна быть выполнена команда stty susp <Cntr-Z> которая связывает эту комбинацию клавиш с посылкой сигнала SIGSTOP процессу (генерация символа suspend).
Для перевода отложеного (приостановленого задания) в фоновый режим нужно воспользоваться командой bg
bg %job_number перевод задания с номером job_number в фоновый режим
bg %%перевод текущего задания фоновый режим
bg %+перевод текущего задания фоновый режим
bg перевод текущего задания фоновый режим
bg %-перевод предыдущего задания фоновый режим
Для возврата задания в интерактывный режим нужно использовать команду fg. Синтаксис ее полностью аналогичный команде bg.
Встроенная в шелл команда kill допускает использования тех же аргументов что и bg и fg для посылки сигналов заданиям.
2.4.7 Программирование скриптов
Все основные управляющие структуры ksh и POSIX Shell полностью повторяют аналогичные в Bourne Shell. Поэтому остановимся более подробно на новых возможностях предоставляемых этими шелами.
Команда select
select parameter in words
do
command_lines
done
Эта команда помогает организовать интерактивный диалог. Она выводит список слов words в виде меню с возможностью выбора, а после выбора пользователем элемента списка она запускает команды из списка command_lines , при этом выбранное пользователем слово доступно командам из списка как параметр parameter.
Двунаправленные пайпы
Korn Shell имеет в своем арсенале механизм позволяющий порождать процессы-потомки соединенные пайпом с родительским шеллом. Стандартный ввод и стандартный потомка может быть доступен из родительского шела. Для создания двунаправленого пайпа нужно использовать конструкцию |& после запускаемой команды.Доступ к пайпу из скрипта может быть получен посредством команд print –p и read –p . Рассмотрим пример использования двунаправленых пайпов:
#!/usr/bin/ksh
bc |&
read a b
print -p "$a * $b"
read -p mul
echo $mul
Замечания:
Использование двунаправленых пайпов оправдано лишь с командами которые работают с устройствами стандартного ввода и вывода, но не напрямую с терминалом (как например редактор vi).
Не существует способа закрыть двунаправленный файл, поэтому в них нельзя использовать команды требующие вначале получения символа конца файла EOF (например программа sort) прежде чем выдать результат.
Команда typeset (только в Korn Shell)
typeset [-option ] [name[=value]] …]
Эта команда создает переменную, назначает ей значение и определяет ее тип. Основные опции команды:
-i переменная name имеет тип integer
-r переменная name является readonly
-l конвертировать все символы с верхнего регистра в нижний
-u конвертировать все символы с нижнего регистра в верхний
-x автоматический експорт переменной
-R выравнивание текста по правому краю
-L выравнивание текста по левому краю
Команда let
Эта команда практически аналогична команде expr в Bourne Shell и используется для вычисления в простых математических выражениях. Пример использования:
$ x=10
$ let x=2*x+5-3/x
$ echo $x
25
Команда ulimit (только в Korn Shell)
ulimit [-f n ]
Эта команда задает ограничение n блоков на файлы записанные на диск порожденными процессами. Запущеная без аргументов показывет текущий лимит.
Массивы
Для доступа к елементам массива используют следующий синтаксис:
array_name [subscript]=value
например:
$ a[0]=10
$ a[1]=xxx
$ a[2]=tt
$ echo ${a[1]}
xxx
$ echo ${a[*]}
10 xxx tt
Это меню-ориентированный интерактивный шелл разработанный компанией Hewlett-Packard для создания дружественного интерфейса к Korn Shell. Шелл содержит последовательности горячих клавиш для быстрого просмотра списка файлов, задач принтера и просмотра файлов, которые он автоматически транслирует в команды HP-UX.
Key Shell содержит все необходимые свойства и возможности Korn Shell (см. Korn Shell). Дополнительные возможности – шелл содержит интерактивную справку, горячие клавиши (видимые) , невидимые последовательности горячих клавиш, строку состояния, возможность конфигурирования.
Запуск и работа в Key Shell.
Шелл использует стандартные переменные среды, не требует дополнительной настройки поэтому, если ваша система сконфигурирована под какой-либо другой шелл вам достаточно набрать keysh для его запуска. При запуске шелла сверху вы видите приглашение $ (командная строка). Далее идет строка меню горячих клавиш, на клавиатуре для них соответственно, используются функциональные клавиши F1 – F8. Следует иметь ввиду – что показывается несколько горячих клавиш, а меню разбито на несколько строк по вертикали и переключение между ними осуществляется клавишей F8. Настройки шелла хранятся в /etc/keyshrc или .keyshrc общие и для каждого пользователя соответственно. Нажатие соотвествующей клавиши соответственно приводит к тому что в промпте появляется командная строка, например, F3 выдает команду Change_dir которая соответствует стандартной cd. Убрать соответствующую команду можно ключом Delete_line. Выход из всех интерактивных редакторов осуществляется клавишей q. Использование видимых последовательностей горячих клавиш достаточно просто и значительно облегчается благодаря наличию интерактивной справки.
Неявные (невидимые) ключи
Кроме всего прочего, keysh позволяет обращаться к стандартным командам HP-UX с использованием своего формата и горячих ключей. Допустим нам необходимо посмотреть календарь на определенный месяц. Команда cal выдает текущий месяц. Cal for_month позволяет выдает приглашение нажать горячую клавишу для выбора желательного месяца и, таким образом, позволяет избежать изучения формата команды cal. Многострочное мменю подчиняется тем же законам, что и для видимых последовательностей. Кроме этого, вы так же можете пользоваться стандартными командами HP-UX, если вас не устраивает то что выдается в горячих клавишах или вам нужен другой формат, вы просто ингнорируете то, что выводит подсказка и жмете возврат каретки в конце своей командной строки.
Настройка keysh
Любые ключи так же можно добавить, фактически это есть соответствие алиасам, например, для шелла bash. Пример: Keysh_config softkey add hostname with_label hname from_user mav
Пример в объяснении не нуждается, поскольку он был создан с использованием интерактивной подсказки шелла и может быть легко восстановлен пошагово. Для невидимых горячих клавиш можно создать такую же командную строку с ключвым словом invisible, например, Keysh config softkey add invisibles.
Перед тем как добавлять свой ключ следует все-таки посмотреть стандартніе последовательности, следует заметить, ято в keysh описаны практически все стандартные последовательности и команды HP-UX поэтому, если вы не настроили какое-нибудь специфическое ПО от третьего производителя, то редактированием последовательностей и не стоит заниматься. Ошиюочно созданный ключ можно удалить последовательностью Keysh config softkey delete.
Иерархия горячих клавиш, файлы определений.
Когда создаются новые ключи в keysh, фактически это есть добавление узла в иерархию узлов (с которыми связаны функциональные клавиши). В системе файл настроек и иерархии находится здесь /usr/keysh/C/softkeys.
Каждый узел ключа имеет следующие свойства:
name (обязательное) это командная строка для доступа к невидимому ключу, для видимого ключа это его метка
type (обязательное для подменю) свойство поределяет то, является ли подменю командной строкой или параметром
attributes (необязательное) определяет поведение горячей клавиши и то как она интерпретируется.
editrules (необязательное) это часть поля атрибутов, которая определяет то, как горячая клавиша интерпретируется в команду HP-UX
Общий формат горячей клавиши, таким образом, будет таким
softkey name
attributes
editrules ;
Пример (определение последовательности Copy_files)
softkey Copy_files command
editrule { append("cp"); }
Подменю будет соответствовать более низкому уровню иерархии и определяется таим образом:
{
type name
attributes
editrules
;
.
}
Если узел (клавиша) ассоциирован с подменю, то в фигурных скобках идет определение дочерних узлов. Дочерние узлы при этом могут быть двух типов – литерал или метка, второй – строка – которая содержит команду или опции команды.
Пример – горячие клавиши для вызова последовательности Copy_files]
{
string <files> disable -1 enable all
editrule { append(argument); }
required "Enter the name of the file(s) to copy."
;
option to disabled
required "Enter the name of the file(s) to copy;
then select \"to\"."
{
string <dest>
editrule { append(argument); }
required
"Then, enter the name of the file or directory to
copy the file(s) to."
;
}
}
4.1 Базовые концепции X Window
4.2 Компоненты системы X Window
4.3 Предварительное конфигурирование
4.4 Старт X Window
4.5 X ресурсы
4.6 Управление шрифтами
В HP-UX 10.20 X server это программа которая стартует автоматически после старта системы непосредственно перед тем как будет запущено окно логина. Она захватывает управление графическим дисплеем, клавиатурой и мышью и все дальнейшее взаимодействия между программами и этими устройствами происходит с участием Х сервера.
Х клиент – это программа которая написана для взаимодействия с Х сервером. Учитывая сетевые возможности сисметы Х Window клиент и сервер могут быть физически разнесены и общаться через сеть.