readline库的使用

接口十分简单,readline和addhistory:

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <readline/readline.h>

#include <readline/history.h>

int main()

{

char* input, shell_prompt[100];

// Configure readline to auto-complete paths when the tab key is hit.

rl_bind_key(‘\t‘, rl_complete);

for(;;) {

// Create prompt string from user name and current working directory.

snprintf(shell_prompt, sizeof(shell_prompt), "%s:%s $ ", getenv("USER"), getcwd(NULL, 1024));

// Display prompt and read input (n.b. input must be freed after use)...

input = readline(shell_prompt);

// Check for EOF.

if (!input)

break;

// Add input to history.

add_history(input);

// Do stuff...

// Free input.

free(input);

}

}

g++ TestReadLine.cc -lreadline就可以了。

时间: 2024-11-14 16:54:31

readline库的使用的相关文章

GNU Readline 库及编程简介

用过 Bash 命令行的一定知道,Bash 有几个特性: TAB 键可以用来命令补全 ↑ 或 ↓ 键可以用来快速输入历史命令 还有一些交互式行编辑快捷键: C-A / C-E 将光标移到行首/行尾 C-B / C-F 将光标向左/向右移动一个位置 C-D 删除光标下的一个字符 C-K 删除光标及光标到行尾的所有字符 C-U 删除光标到行首的所有字符 ... 同样的操作在很多交互式程序都有类似的操作,例如 ftp.gdb 等等,那么你是否想过这些是如何实现的呢?如果我们要做一个命令行下的交互式开源

readline( )库的安装和使用,实现命令补全

之前自己实现一个简单shell 的时候,想要实现命令行自动补全功能,于是上网查了查资料,发现多数都提到了 readline( ) 库,经过仔了解后,发现其实bash 的底层实现也是调用了这个库,我的系统是 fedora 21 并没有安装这个库,且man page 中也没有相关信息,(Q:bash 调用的谁呢?)不管那末多,先无脑安转吧,边安转边看情况吧(把我害惨了......) 首先平直觉 yum install readline 但是得到了这样的信息: 提示我readline软件包已经安装..

【原创】lua编译时发现缺少readline库

编译lualua项目,其中用到了lua-5.1版本的源码,编译时提示缺少readline库,找不到readline/readline.h头文件等 发现系统中其实有安装readline库不过没有做链接和头文件目录拷贝,anyway不管这些,就当没有,重新安装readline库 1.下载readline-6.2.tar.gz wget -c ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz 放到某个目录下,如/usr/local/ 并解压出来 ta

python2.7 编译安装 readline

python centos 自带的版本是2.6.6,有些库不支持,决定编译安装python2.7 编译后,发现退格键不能用,查了半天发现是readline库没有安装,需要手动编译 yum -y install readline readline-devel* 重新编译python ./configure --prefix=/opt/python/ --with-readline make && make install 这时候就发现退格键可以正常使用了.

转:Python标准库(非常经典的各种模块介绍)

Python Standard Library 翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我们 核心模块 1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. exceptions 模块 1.4. os 模块 1.5. os.path 模块 1.6. stat 模块 1.7. string 模块 1.8. re 模块 1.9. math 模块 1.10. cmath 模块

Python:标准库(包含下载地址及书本目录)

下载地址 中文版(扫描版)请使用迅雷下载 英文版(文字版) 官方文档 The Python Standard Library <Python标准库>一书的目录 <python标准库> 译者序 序 前言 第1章 文本1 1.1 string—文本常量和模板1 1.1.1 函数1 1.1.2 模板2 1.1.3 高级模板4 1.2 textwrap—格式化文本段落6 1.2.1 示例数据6 1.2.2 填充段落6 1.2.3 去除现有缩进7 1.2.4 结合dedent和fill7 1

GNU Readline库函数的应用示例

说明 GNU Readline是一个跨平台开源程序库,提供交互式的文本编辑功能.应用程序借助该库函数,允许用户编辑键入的命令行,并提供自动补全和命令历史等功能.Bash(Bourne Again Shell).GDB.ftp 和mail等程序就使用Readline库提供其命令行界面. Readline是GNU通用公共许可证版本3(GNU GPLv3)下的自由软件.这意味着若发布或分发的程序使用Readline库,则该程序必须是自由软件,并持有GPL-兼容的许可证.当然,用户也可使用自己的实现替代

PostgreSQL[9.4-9.6]——服务器管理

一.编译安装: 环境准备: GNU make 版本 >=3.8 (make --version) ISO/ANSI C 编译器,至少須兼容 C89 标准,GCC 或 intel 編译器等均可 gzip .bzip2 .tar ,源码解包 GNU Readline 库,用于 psql 操作历史命令 安全相关模块:Kerberos.OpenSSL.OpenLDAP.PAM 等,需要事先安装好对应的包 如果要使用 PL/Python.PL/Perl.PL/Tcl 等过程語言,須保証語言本身及相关的开发

linux.backspace乱码(转)

42 linux.backspace乱码 linux环境sqlplus中使用backspace键出现乱码的解决方法2008-04-30 16:32 在linux环境下使用sqlplus,在回删(backspace)时往往会出现 一串的乱码.出现乱码是由于oracle的sqlplus不使用gnu的readline库造成的. 解决方法有两种:1.要使用回删键(backspace)时,同时按住ctrl键2.设定环境变量在bash下:$ stty erase ^H或者把 stty erase ^H 添加