1

ユーザー入力に下線を引くつもりですが、調査を行った後でも、その方法を見つけることができません。

これまでのところ、これは私が研究を行って得たものですが、まだ機能していません。誰でもそれを解決する方法を知っていますか? それともそれを行う適切な方法ですか?

以下の名前の代わりにread -p "What is your name: " 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
}

事前に助けてくれた人に感謝します!乾杯!

4

2 に答える 2

2

こちらのリンクをご覧ください

しかし、それだけです:

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

重要な部分は、\033[4m下線を引い\033[0mて元に戻すことです。

于 2012-01-30T15:05:21.680 に答える
1

プロンプトの最後で下線をオンにするエスケープシーケンスを配置し、その後、通常のシーケンスに戻します。

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データベースを使用して、関連するエスケープ(/その他)シーケンスを取得できます。オンとオフに下線を引くためのterminfo機能名は、「smul」と「rmul」です。

read -p "Please enter your name: $(tput smul)" name
tput rmul
于 2012-01-30T17:33:15.557 に答える