有没有一种方便的方法将 bash 命令列表包装到 rlwrap 中?

有没有一种方便的方法将 bash 命令列表包装到 rlwrap 中?

感谢一个superuser.com 上的问题,我发现了这个非常方便的rlwrap工具。

它满足了我的需求(即将命令历史记录添加到另一个命令行工具),但我想知道如何使用它来将命令历史记录添加到“复合”shell 命令,就像典型的

$> while read line; do echo "i read $line"; done
hi
i read hi
^D

当我将while循环放入 shell 脚本中并像 一样执行它时rlwrap ./whilereadline.sh,就可以了。

但我想知道我该怎么做没有需要一个额外的文件,有点像

$> rlwrap (while read line; do echo "line: $line"; done)
bash: syntax error near unexpected token `while'

有任何想法吗?

答案1

你有没有尝试过

rlwrap sh -c 'while read line; do echo "i read $line"; done'

rlwrap需要一个可以运行的命令,而()语法诱导的子 shell 则不需要。 sh -c ...然而是一个命令。替换shbash或您喜欢的任何外壳。

答案2

rlwrap需要一个程序来执行,它本身无法解释命令。您可以将所需的 shell 代码包装在bash -c命令中:

rlwrap bash -c 'while read line; do echo "line: $line"; done'

请注意,根据您要使用的代码,引用可能会变得有些难看。

相关内容