如何在不提供编辑功能的命令行应用程序中使用编辑功能

如何在不提供编辑功能的命令行应用程序中使用编辑功能

有些命令行程序接受用户的输入,但不提供编辑功能,例如sh(别名dash) 或nslookup其他。

有没有办法强制此类应用程序提供编辑功能来更正当前行或调用前面的行?

答案1

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

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

您可以使用它们中的每一个来简单地使用命令来包装,例如

rlwrap sh

第一个,,rlwrap似乎是最好的,因为第二个使该行变为粗体,第三个无法显示提示sh,但它确实有效。

答案2

最值得学习的技术是 readline,因为使用 readline 编译的程序阅读行支持已经具备此功能 - 无论是在 Linux 发行版中还是在 Unix GNU 实用程序中。(大多数 GNU 程序都是这样实现的,如果没有这样做,那就很“痛苦” - 对我来说,如果它们没有“正确”完成,我会重新编译它们。)这很像学习 vi 编辑器 - 一旦它“进入你的内心”,它就永远不会离开;而且,它使使用各种程序变得更加熟练和愉快。readline 支持在使用该库编译的任何程序中的行为都相同。readline 在单个软件程序中的实现方式取决于该程序的程序员,因此里程可能会有所不同。

例如,在 BASH 中,向上箭头键可调用上一行,在几乎所有控制台程序中,[CTRL]+[U] 可删除光标左侧的所有内容,而 [ALT]+[F] 可向前移动一个单词,[ALT]+[B] 可向后移动一个单词,等等……

Nslookup 确实有这个,还有 sh/dash - 但它们很少。

相关内容