Клавише [Esc] соответствует код \033. Символ \ указывает команде echo, что далее следует восьмеричное значение. Например, для вывода на экран символа @ можно применить команду:

echo "@"

Или же для вывода на экран этого символа можно воспользоваться восьмеричным значением символа, которое равно 100.

echo -e "\100"

Для System V примените команду:

echo "\100"

Результат будет аналогичным.

Команда clear очищает экран и устанавливает курсор в верхнем левом углу экрана. Это положение курсора обычно называется home. При работе с терминалами, относящимися к семейству VT, эту процедуру выполняет последовательность esc [2J. Данную последовательность можно отправить с помощью конструкции echo.

System V echo "\033[2J"

LINUX/BSD echo -e "\033[2J"

При этом следует придерживаться тех же правил, которыми руководствуются при работе с управляющими символами, помещенными в текстовые файлы. Не следует применять методику "вырезать и вставить", поскольку в этом случае будет утеряно специальное значение символов. Чтобы вставить управляющие символы, отображающие курсор, воспользуйтесь следующим кодом:

echo ' hit the key then [?25h'

Здесь даны указания о том, что следует воспользоваться комбинацией клавиш [Ctrl+V], затем нажать клавишу [Esc] и после этого ввести символы [?25h.

Если при использовании команды tput civis курсор не исчезает и при этом не запущен эмулятор, воспользуйтесь следующим небольшим сценарием. С его помощью можно скрыть либо отобразить курсор. Вы можете подробно изучить приведенную

функцию либо перевернуть пару страниц и сразу ознакомиться с результатами выполнения сценария.

$ pg cursor

#!/bin/sh

#отображение|сокрытие курсора

#отображает или скрывает курсор при работе с терминалами vt100, 200, 220, meth220

#замечание: функционирует при нормальном ttу–соединении при использовании

#некоторых win–эмуляций

#проверьте TERM env для вашего типа!

_ОРТ=$1

if [ $# -ne 1 ]; then

echo "Usage: `basename $0` cursor [on | off]"

exit 1

fi

case "$_OPT" in

on|ON|On)

# отображение курсора

ON=`echo ^[[?25h`

echo $ON

;;

off|OFF|Off)

# сокрытие курсора

OFF=`'echo ^[ [?251`

echo $OFF

;;

*)echo "Usage: cursor on | off" exit 1

;;

esac

<p><emphasis><strong>21.2.5. Изменение положения курсора</strong></emphasis></p>

Команду tput также можно применять для отображения курсора в произвольном месте экрана. При этом используется следующий формат:

cup r c

где r — это номер ряда (строки) в нижней части экрана, а с — номер столбца на экране.

Лучше применять эту команду в форме функции, тогда можно указывать значения для строки и столбца.

xу()

(

#_R= row, _C=column

_R=$1

_C=$2

tput cup $_R $_C

}

clear

xy 1 5

echo -n "Enter your name :"

read NAME

xy 2 5

echo -n "Enter your age :"

read AGE

Конечно, желательно передавать строку для отображения; ниже приводится небольшая модификация этого сценария.

ху()

{

#_R= row, _C=column

_R-$1

_TEXT=$3

tput cup $_R $_C

echo -n $_TEXT

}

Сценарий можно вызвать следующим образом:

xy 5 10 "Enter your password :" read CODE

<p><emphasis><strong>21.2.6. Центрирование отображаемого текста</strong></emphasis></p>

При центрировании текста на экране нужно быть предельно внимательным. С помощью команды tput необходимо получить столбцы, затем получить значение для длины строки, исключить это значение из столбцов tput и разделить ответ на две части. В дальнейшем нужно только указать номер строки, где отобразится данная строка.

Ниже приводится часть кода, который выполняет эту задачу. Чтобы просмотреть строки файла и центрировать на экране весь текст, достаточно выполнить небольшое изменение.

Введите символы, нажмите клавишу [Return], и текст отобразится в середине экрана начиная со строки 10.

echo -n "input string :"

read STR

# быстрый способ вычисления длины строки

LEN=`echo $STR | wc -с`

COLS=`tput cols`

NEW_COL=`expr \($COLS - $LEN \) / 2`

xy 10 $NEW_COL

echo $STR

Чтобы указанная функция отличалась большей гибкостью, при ее вызове можно

использовать текст и номер строки. Функция будет иметь следующий вид:

centertxt() {

_ROW=$1 _STR=$2

Перейти на страницу:

Похожие книги