Подчеркивая пользовательский ввод - PullRequest
1 голос
/ 30 января 2012

Я намерен подчеркнуть пользовательский ввод, но после проведения исследования я все еще не могу найти способ сделать это.

Пока это то, что я получил от проведения исследования, но он все еще не делаетРабота.Кто-нибудь знает, как это решить?или, вернее, правильный способ сделать это?

Что если я использую read -p "Как тебя зовут:" name вместо приведенного ниже?Как то, что я ожидаю на выходе.

Как вас зовут?(вход от пользователя и подчеркнут)

function underlineInput()
{
PS1='\033[4;47;40m'
}

function UNunderlineInput()
{
PS1='\033[0;47;40m'
}

function hi()
{
echo "Please enter your name: "
underlineInput
read input
underlineInput
}

Спасибо тем, кто заранее помог!Ура!

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Проверьте эту ссылку здесь

Но это просто:

$ echo -e "\033[4mThis is a underlined line.\033[0m"

Ключевыми частями являются \033[4m, чтобы подчеркнуть, и \033[0m, чтобы изменить егоназад.

1 голос
/ 30 января 2012

Поместите escape-последовательность, чтобы включить подчеркивание в конце подсказки, а затем отправьте последовательность обратно в нормальную последовательность:

read -p $'Please enter your name: \033[4m' name
printf '\033[0m' # Use printf instead of echo to avoid newline, and it translates escape without $''

Кстати, если вы хотите, чтобы этот скрипт работал на другиха также типы терминалов, вы можете использовать базу данных terminfo, чтобы получить соответствующие escape-последовательности (/ что угодно).Имена возможностей terminfo для включения и выключения подчеркивания: «smul» и «rmul»:

read -p "Please enter your name: $(tput smul)" name
tput rmul
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...