C语言 模拟 BASH 箭头以获取上一个命令



我不是在问如何捕捉击键,根据互联网搜索,我相信这可以使用 Ncurses 库 https://en.wikipedia.org/wiki/Ncurses

我想知道的是按键后如何在终端中显示命令。

目前我正在尝试复制 BASH 的一部分,我的代码所做的是

stephen@stephen:~/project/simsh$ ./simsh.c
stephen@stephen:~/project/simsh$ pwd
whateverDirectoryI'mNowIn
stephen@stephen:~/project/simsh$

我想要的是,在我按下向上箭头后,它可以显示以下内容

stephen@stephen:~/project/simsh$ pwd

而不是

stephen@stephen:~/project/simsh$ ^[[A

虽然我知道如何捕获关键信号,但我不知道如何立即显示旧命令并将其视为潜在的输入命令。

使用 GNU Readline 库,它将为您处理所有这些。

GNU Readline 是一个软件库,它为带有命令行界面的交互式程序(如 Bash(提供行编辑和历史记录功能。它目前由Chet Ramey作为GNU工程的一部分进行维护。

它允许用户移动文本光标,搜索命令历史记录,控制杀戮环(复制/粘贴剪贴板的更灵活版本(以及在文本终端上使用Tab完成。作为一个跨平台库,readline 允许各种系统上的应用程序表现出相同的行编辑行为。

最新更新