在Bash中预填充提示

agn*_*ter 7 bash

编写一个bash脚本,我希望得到用户输入.真棒,

read -p "What directory should we save in? " -e FOLDER
Run Code Online (Sandbox Code Playgroud)

除了我想要做的事情,理想情况下,让用户看到类似的东西:

What directory should we save in? /home/user/default/
Run Code Online (Sandbox Code Playgroud)

将光标放在行尾,以及向后删除或追加或删除的能力.基本上,预填充用户的输入,但让他们能够编辑它.

Readline显然具有该功能,但它似乎没有在read命令中公开.任何替代品?我宁愿不必使用perl等.

我正在努力的约束是我正在编写一个很好的广泛传播的shell脚本,因此应该尽可能少地依赖于预先存在的基础架构.rlwrapread -i这两个工作,如果它们的依赖关系(rlwrap和bash版本>>不管我有分别,)可供选择.两个好的答案,选择适合你的.

vmp*_*str 13

$ read -p "What directory should we save in? " -i "/home/user/default/" -e FOLDER
What directory should we save in? /home/user/default/
Run Code Online (Sandbox Code Playgroud)

应该工作,对吗?

  • 在bash 3.2.25(rhel5.5)或3.2.48(雪豹)中没有提供-i-read (2认同)

Foo*_*Bah 0

您可以将命令包装在 rlwrap 中,它提供即时读取功能:https://github.com/hanslub42/rlwrap

(rlwrap -P 做你想要的)

至于 3.2 行的纯 bash 解决方案(我假设您正在使用),我认为它不可能