Bash Rlwrap不';“我似乎不与你合作。”;阅读-e“;

Bash Rlwrap不';“我似乎不与你合作。”;阅读-e“;,bash,shell,cygwin,readline,Bash,Shell,Cygwin,Readline,对一些常见问题的新扭曲: 在我的交互式脚本中,我预先填充用户输入,如下所示: #process_line.sh INPUT=$1 # previous value read -e -p "> " -i "$INPUT" INPUT 要实现命令历史记录,我调用process\u line.sh rlwrap ./process_line.sh $INPUT 现在有一个转折点:如果我有“read-e”选项,我可以编辑预填充的输入,但没有命令历史记录,相反,我可以有命令历史记录,这

对一些常见问题的新扭曲:

在我的交互式脚本中,我预先填充用户输入,如下所示:

#process_line.sh

INPUT=$1 # previous value
read -e -p "> " -i "$INPUT" INPUT
要实现命令历史记录,我调用
process\u line.sh

    rlwrap ./process_line.sh $INPUT
现在有一个转折点:如果我有
“read-e”
选项,我可以编辑预填充的输入,但没有命令历史记录,相反,我可以有命令历史记录,这是
rlwrap
提供的,没有
“read-e”
选项,但没有预填充(也就是说,
“read-I”
实际上没有任何作用)

当然,问题是我是否可以同时拥有输入预填充和编辑及命令历史记录


谢谢

关闭
-e
进行读取。这样两个readline实现就不会冲突


要获得提示,您可以将
-S“>”
传递给rlwrap。

此用例从版本0.25开始就在rlwrap手册中;具体如何操作取决于rlwrap版本

在rlwrap 0.37中,您可以这样做:

输入=$(rlwrap-o-S“>”-p$INPUT cat)

这种方法的优点是每个输入变量都可以给出自己的历史记录和完成列表(使用-f和-H选项)


cygwin版本(0.24)确实很古老,但是自己编译rlwrap应该是无痛的。如果需要,您可以构建静态链接版本(有关说明,请参阅安装文件),并将其与脚本一起分发。

如果我关闭
-e
,则我将丢失输入编辑。不确定您所说的
-S
,似乎不是一个有效的选项(Cygwin,bash版本4.1.10)rlwrap直接支持行编辑(并且rlwrap有-S参数——意识到我的响应不清楚)抱歉,
-S
对我不起作用:
rlwrap:error:unknown option--S请尝试“rlwrap--help”了解更多信息
您建议它应该是这样的
rlwrap-S$INPUT./process_-line.sh
rlwrap-S“>”-P“$INPUT”。/process_-line.sh“$INPUT”
,脚本运行
read INPUT
。阅读rlwrap手册页。它支持
-S
选项吗?是的,我已经浏览了整个手册页:)你似乎有一个完全不同的rlwrap版本,我的有以下选项:
选项:-a,--始终读取行[=密码:]-b,--中断字符-c,-完整文件名-c,-命令名-f,-文件-h,--帮助-h,--历史文件名-i,-不区分大小写-l,-日志文件-n,-无警告-m,-多行[=换行符]-r,-记住-v,-版本-s,-历史大小写(负数:只读)
不存在-s或-P选项。。。看来我被卡住了!我退缩了,让我的朋友(他实际上是在为生活而编程)帮助我用Python实现这一点。这将有助于提高可移植性,并增加在其上粘贴GUI的可能性。。我意识到这可能是一个比用脚本分发包装更复杂的解决方案,但因为我把它作为一种爱好,所以我不介意!无论如何谢谢你!