GNU Readline 库及编程简介

本文介绍了GNU Readline库在命令行交互式程序中的应用,如Bash、ftp和gdb。Readline库提供命令补全、历史搜索和行编辑快捷键等功能,通过`readline()`函数读取用户输入。文章详细讲解了如何使用Readline进行自定义补全,包括绑定按键功能、创建自定义补全函数,并给出了官方示例程序的链接,鼓励读者通过实践深入理解Readline库。
摘要由CSDN通过智能技术生成

用过 Bash 命令行的一定知道,Bash 有几个特性:

  • TAB 键可以用来命令补全
  •  或  键可以用来快速输入历史命令
  • 还有一些交互式行编辑快捷键:
    • C-A / C-E 将光标移到行首/行尾
    • C-B / C-F 将光标向左/向右移动一个位置
    • C-D 删除光标下的一个字符
    • C-K 删除光标及光标到行尾的所有字符
    • C-U 删除光标到行首的所有字符
    • ...

同样的操作在很多交互式程序都有类似的操作,例如 ftp、gdb 等等,那么你是否想过这些是如何实现的呢?如果我们要做一个命令行下的交互式开源软件,是否希望也能有这些命令补全、搜索历史命令、行编辑快捷键等等这些人性化的交互方式呢?

要想实现这些,你有两种途径:可以自己写程序实现,或者调用开源的库 Readline Lib。例如上面介绍的 bash、ftp、gdb 等等软件都使用了 GNU 的开源跨平台库,为其提供交互式的文本编辑功能。当然需要注意的是,Readline Library 是 GNU 自由软件,在 GNU GPL V3 协议下发布,因此如果你的程序中需要用到该库,也必须遵守相关协议。

本文首先简单介绍一下该库的基本使用方法,后面会稍微详细介绍下如何使用 Readline 来自定义命令补全功能。

Readline 基本操作

很多命令行交互式程序交互方式都差不多,输出提示符,等待用户输入命令,用户输入命令之后按回车,程序开始解析命令并执行。那么这里面有个动作是读入用户的输入,以前我们也许使用 gets() 这样的函数来实现,当我们使用 Readline 库时,可以使用 readline() 函数来替换它,该函数在 ANSI C 中定义如下:

char *readline (char *prompt);

该函数带有一个参数 prompt,表示命令提示符,例如 ftp 中就是 "ftp>",用户在后面可以输入命令,当按下回车键时,程序读入该行(不包括最后的换行符)存入字符缓冲区中,readline 的返回值就是该行文本的指针。注意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值