gpt4 book ai didi

linux - 在 shell 中放置提示符(带光标输入)*上方*选项列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:23 25 4
gpt4 key购买 nike

所以我想知道是否有可能在控制台上打印一些东西请求用户输入的提示下。

read -p "Would you like to choose an apple or a pear? "
echo "5 apples"
echo "3 pears"

像这样,你在第一行提示用户,但下面写了一些东西。我不确定我应该如何解决这个问题,因为当我提示用户时,脚本执行会等待响应。


需要明确的是,我的意图是一个如下所示的提示,其中 _ 代表光标位置:

Would you like to choose an apple or a pear? _
5 apples
3 pears

我正在尝试使用计时器在后台编写后续提示行,但如果可能的话,我更愿意从其他角度解决这个问题。

最佳答案

快速说明 -- 如果寻求与没有 tput 的基准 POSIX shell 或系统的兼容性,请参阅 answer by @Attie在这个问题上。由于使用了 tput,这个答案具有与非 ANSI 终端一起工作的优势,但另一个与更广泛的 shell 兼容。


tput 可用于查找用于将光标移动到给定位置的适当控制序列。在下面的示例中,我们将从清空屏幕开始,因此我们知道提示将始终打印在左上角 -- (0,0)

# start with an empty screen
clear

# print an empty line, then "5 apples" on the next line, and "3 pairs" on the third
printf '%s\n' '' "5 apples" "3 pairs"

# Move the cursor back to the top-left-corner
tput cup 0 0

# ...and print the prompt there.
read -p "Would you like to choose an apple or a pear? "

通过使用 tput cuu 将光标向上移动所需的行数,然后使用 tput cud 将其向下移动,可以避免首先清除屏幕的需要:

# print an empty line, then "5 apples" on the next line, and "3 pairs" on the third
printf '%s\n' '' "5 apples" "3 pairs"

# Move the cursor up three lines...
tput cuu 3

# ...and print the prompt there.
read -p "Would you like to choose an apple or a pear? "

# finally, after input has been entered, move the cursor down three lines
tput cud 3

关于linux - 在 shell 中放置提示符(带光标输入)*上方*选项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com