如何在不提供它们的命令行应用程序中具有编辑function

有一些命令行程序从用户那里获取输入,但不提供编辑function,如sh (别名dash )或nslookup等。

有一种方法可以强制此类应用程序提供编辑function来纠正当前行或调用以前的行吗?

至少有三种工具可以获得所需要的东西,它们是:

  • rlwrap – readline feature命令行包装器
  • rlfe – 使用readline为其他程序“烹饪”输入行的前端
  • 用于交互式程序的ledit -line编辑器

你可以使用它们中的每一个简单的prepeding命令包装,如

 rlwrap sh 

第一个, rlwrap ,似乎是最好的,因为第二个以粗体显示线,第三个无法用sh显示提示,但它仍然有效。

无处不在的学习技术是readline,因为已经使用readline支持编译的程序已经具备了这种能力 – 无论是Linux发行版还是Unix GNU实用程序。 (大多数GNU程序都是以这种方式完成的,当它们没有时,它会“痛苦” – 如果它们没有完成,我会重新编译它们。“这就像学习vi编辑器一样 – 一次它“在你身上”永远不会离开; 并且,它使得与各种程序合作更加熟练和愉快。 对于使用该库编译的任何程序,readline支持的行为相同。 如何在单个软件程序中实现readline取决于该程序的程序员,因此里程可能会有所不同。

例如,在BASH中,向上箭头键调用前一行,并且几乎在任何控制台程序中,[CTRL] + [U]擦除光标左边的所有内容,而[ALT] + [F]向前移动一个单词并且[ALT] ] + [B]向后移动一个单词,还有更多……

Nslookup确实有这个,sh / dash – 但它们很小。