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

之前自己实现一个简单shell 的时候,想要实现命令行自动补全功能,于是上网查了查资料,发现多数都提到了

readline( ) 库,经过仔了解后,发现其实bash 的底层实现也是调用了这个库,我的系统是 fedora 21 并没有安装这个库,且man page 中也没有相关信息,(Q:bash 调用的谁呢?)不管那末多,先无脑安转吧,边安转边看情况吧(把我害惨了。。。。。。)

首先平直觉 yum install readline

但是得到了这样的信息:

提示我readline软件包已经安装。。。。。。。但是/usr/include下根本没有<readline.h>这个库好吗?于是又去查了查资料,

发现需要安装libreadline 但是由于版本问题又折腾了半天。

redhat 系列下这个软件包叫  readline-devel     ubuntu 下叫readline-dev    细分又分为libreadline5-dev   和 libreadline6-dev

于是安装yum install readline-devel  成功

在/usr/include 下已经有了<readline>

开始引用头文件

如图已经引用OK ,开始编译吧,迫不及待了。。。。。。。。。。。

按这个库已经花费一天半时间

这是什么鬼,是不是Makefile 有问题? 赶紧上Makefile\

我已经链接了readline 这样?????????????????????????????????

于是有开始查资料发现了这个

ldconfig -p | grep readline

这是一个库文件所以需要查看一下是否有这个库,如果是一个动态库那么就需要在链接的时候将这个动态库加入。

发现这就是一个动态库(不幸被我猜中)

然后只要加上这个库OK


   然后make OK !

我的my_shell 已经有自动补全功能了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-28 14:56:30

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

Zsh安装CMake补全脚本进行CMake命令补全

最近在尝试使用Zsh,发现其补全命令的功能相当厉害.但对CMake命令的补全在默认的5.0.5中好像没有看到,网上找了下关于配置Zsh补全的文章也没有多少.     于是自己动手,发现在Zsh安装目录下有个functions的文件夹,里面都有以_开头的各种补全提示文件,比如_sed,_awk等,于是尝试在网上 下到zsh_cmake补全文件之后,重命名为_cmake放置该文件夹中(注意Windows用户的换行符,在这个上浪费了很多时间,使用 dos2unix可以解决)重新启动Zsh,享受CMak

解决CentOS 7安装后没有killall、ifconfig、命令补全

从centos6 转到centos7发现少了很多常用命令,下面就常见的几个做一个说明 解决办法 没有killall命令: yum install  -y psmisc 没有ifconfig命令: yum install -y net-tools 没有命令补全:  yum install -y bash-completion

8.1 shell 介绍、8.2 命令历史、8.3 命令补全与别名、8.4 通配符、8.5 输入输出重定向

8.1 sehll 介绍 什么是shell shell 是一个命令解释器,提供用户和机器之间交互 支持特定的语法,比如逻辑判断,循环. 每个用户都可以有自己特定的shell. centos7 默认的shell 为bash( Bourne Agin shell ) 还有zsh ,ksh等 8.2 命令历史 /root/.bash_history ;命令历史放置文件 [[email protected] ~]# ls /root/.bash_history/root/.bash_history [[

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 # Linux shell 基础 # 8.1 shell 介绍 - 什么是shell 1. shell 是一个命令解释器,提供用户和机器之间的交互 2. 支持特定语法,比如逻辑判断.循环 3. 每个用户都可以有自己特定的shell 4. CentOS7 默认shell 为bash (Bourne Agin Shell) 5. 还有zsh.ksh等 ``` [[email protected]

交互式输入编辑与历史命令补全

1.行编辑 如果支持,在交互式命令输入中,当前行可以使用以下的快捷键进行编辑: Ctrl+A:将光标移动到行开始位置 Ctrl+E:将光标移动到行结束位置 Ctrl+B:将光标往左移动一个位置 Ctrl+F:将光标往右移动一个位置 Backspace擦除光标左边的一个字符 Ctrl+D:擦除光标右侧一个字符 Ctrl+K:擦除光标右侧所有字符 2.历史命令补全 历史命令补全工作原理如下:将所有从命令行中输入的非空行保存在历史缓存中,当你在新的一行中输入命令 时,使用Ctrl+p输入历史命令中的上

python 中的命令补全脚本

该命令补全脚本来自网络,把脚本放到特定的目录下,用的时候import进来就可以了 路径如下查找: >>> os.sys.path ['', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-

linux命令补全的技巧

在 Linux 系统中,当你输入一个命令,再按两次 TAB 键,就会列出所有以你输入字符开头的可用命令.这并不新鲜,可能你已经知道了.这个功能被称作命令行补全bash completion. 默认情况下,bash 命令行可以自动补全文件或目录名称.不过,我们可以增强 bash 命令补全功能,通过 complete 命令让它达到新的高度. 我们是怎样使用可编程的命令行补全功能(programmable completion)把自动补全功能应用于选项或者命令行参数.例如:在输入 write 命令之后

Python tab 命令补全,以及 vim 补全

CentOS 7 在python 命令行中,使用补全 python 查看 packages 的目录 可用 sys.path 查看. /usr/lib/python2.7/site-packages vim tab.py #!/usr/bin/env python  # python startup file  import sys import readline import rlcompleter import atexit import os # tab completion  readli

shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向

shell介绍 shell是一个命令解释器,提供用户和机器之间的交互,支持特定语法,比如逻辑判断.循环,每个用户都可以有自己特定的shell CentOS7默认shell为bash(Bourne Agin Shell) 还有zsh.ksh等 命令历史 查看历史命令 [[email protected] ~]# cat .bash_history 修改历史记录条数: vi /etc/profile HISTSIZE=1000 修改查看历史记录的格式: /etc/profile中新增: HISTTI

shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向

shell介绍 shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具.实际上,在shell和计算机硬件之间还有一层东西--系统内核. 用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作. Redhat.Centos 默认安装的shell版本是bash,它是sh的增强版. 历史命令 我们执行过的命令Linux都会记录,预设可以记录1000条历史命令.这些命令保存在用户家目录的.bash_h