Clo*_*oud 1 c linux bash shell command-line
美好的一天,
我正在编写一个简单的CLI(命令行界面)应用程序,它提供了一个简单的提示,可以接受来自用户的字符串,验证它们,并根据输入执行某些操作.非常坦率的.
我正在寻找一个独立于平台,NON-GPL/LGPL的手段(或者,至少适用于兼容POSIX的操作系统,如Linux,BSD等),所以我可以使用上/下箭头键来回滚动在我的CLI应用程序中以前键入的命令的历史记录中,并将它们显示在输入行中.
目标是有效地模仿BASH和大多数其他炮弹中的历史特征.我想只使用向上/向下键并检测它们.我假设我需要为此使用中断或一些专门的库; 我真的想用标准ANSI C来做这件事,并且必须完全避免使用任何第三方库.
如果你坚持自己这样做,那么除了"自己动手"之外别无他法.它不是非常复杂,但它也不是早上的工作.
你应该非常认真地考虑使用GNUreadline,这是其他人(包括bash)使用的.它完成了所有这些以及更多并且做得很好.
您可以使用 readline,或者您可以采取简单的路线,什么也不做。当您运行程序时,通过 rlwrap 调用它,您就可以免费编辑历史记录。换句话说,而不是:
$ mytool
Run Code Online (Sandbox Code Playgroud)
你只要跑
$ rlwrap mytool
Run Code Online (Sandbox Code Playgroud)
rlwrap 是 readline 的包装器,它允许您无需执行任何工作即可获得 readline 的好处。