如何在不提供它们的命令行应用程序中具有编辑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 – 但它们很小。