sqlite3 shell方向键、浏览历史命令不能用的问题

在sqlite3 shell下,按上下方向键可以浏览历史命令,按左右方向键则可以将光标移动到命令中任意字符位置,从而可以修改错误的语句或误敲的字符。所以方向键是sqlite3 shell下最常用的功能。

在debian(包含ubuntu)下,sqlite3 shell方向键默认是不工作的。

?这个问题是有意为之的,原因是:命令行编辑特性是有外部依赖的,sqlite3二进制包的维护者不对可用的外部库作假定,默认不去引用这些外部库,否则,二进制包可能是不可用的。

命令行编辑特性依赖的外部库是readline,在debian/ubuntu下,通常readline库默认是已经安装的(比如我的ubuntu 11.10桌面版默认已经安装了这三个包readline-common, libreadline5, libreadline6),但sqlite3在编译阶段需要检测readline的头文件,所以还得安装dev包:

sudo apt-get install libreadline6-dev libreadline-dev

坑爹的是,我用的网易源中没有readline的dev包,google之,在这里找到11.10对应的.deb格式的包:

?https://launchpad.net/ubuntu/oneiric/i386/libreadline6-dev/6.2-2ubuntu1

https://launchpad.net/ubuntu/oneiric/i386/libreadline-dev/6.2-2ubuntu1

dpkg -i libreadline-dev_6.2-2ubuntu1_i386.deb

dpkg -i libreadline6-dev_6.2-2ubuntu1_i386.deb

下载与11.10所用版本的sqlite3源码(3.7.7),重新编译、安装,进入sqlite3 shell,发现问题已解决。Enjoy it!

时间: 2024-08-25 01:01:07

sqlite3 shell方向键、浏览历史命令不能用的问题的相关文章

rlwrap: command not found和解决linux下sqlplus 提供浏览历史命令行的功能

rlwrap工具可以解决linux下sqlplus 提供浏览历史命令行的功能,和删除先前输入错误的字母等问题 1.安装 需要readline包 这个安装光盘就有 [[email protected] RedHat]# cd RPMS/[[email protected] RPMS]# rpm -Uvh readline*warning: readline-4.3-13.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60eerror: Failed

linux下sqlplus实现浏览历史命令和删除错误字母功能

Rlwrap 官网下载http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap 工具可以解决linux 下sqlplus 提供浏览历史命令行的功能,和删除先前输入错误的字母等问题安装过程注:将rlwrap-0.37.tar.gz 拷贝到/home 下# cd /home# tar zxvf rlwrap-0.37.tar.gz… …# cd rlwrap-0.37# ls# ./configure prefix=/usr/rlwrap    //我在这里指

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

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

【转载】sqlplus中上下方向键回调历史命令--rlwrap安装

rlwrap 可用来支持Oracle下sqlplus历史命令的回调功能,提高效率. 1.下载 从http://utopia.knoware.nl/~hlub/uck/rlwrap/下载rlwrap-0.37.tar.gz,然后上传到相应目录 0.37版本在redhat6上安装的时候会报没有依赖包,其实是高版本的依赖包软件找不到,不想摆弄了.我在网上其他地方搜了一个 rlwrap-0.42,可以在redhat6上直接装. 2.安装 2.1主要步骤是: ./configure make make i

Shell脚本中cd命令使用

在写shell脚本的时候发现cd切换目录的时候无法切换,代码是下面的. 1 #!/bin/bash 2 #changedir.sh 3 history 4 cd /home/firefox 5 sleep 1 6 pwd 我仔细一想,我执行的时候是./changedir.sh来执行的,这样执行的话终端会产生一个子shell,子shell去执行我的脚本,在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回.回到终端根本就看不到这个过程的变化.

历史命令、自动注销

shell环境的历史命令为我们在操作时提供了很大的便利,但其同样也存在着一些风险,因为只要获得了用户的命令历史文件,我们所做的操作就等于摆在别人面前,特别是有些命令还包括了我们的一些明文密码,无疑是我们安全的一大隐患.因此我们可以通过减少历史命令条数降低我们的安全风险.历史命令记录的条数由变量HISTSIZE决定,所以我们可以通过修改/etc/profile文件中的HISTSIZE变量值.这是我们通过history命令可以查看到我们之前所操作过的所有命令. 进入/etc/profile文件将HI

shell介绍/命令历史/命令补全/通配符/输出输入重定向

shell介绍 * shell是一个命令解释器,提供用户和机器之间的交互. * 支持特定语法,比如逻辑判断.循环. * 每个用户都可以有自己特定的shell. * Centos7默认shell为bash. * 还有zsh.ksh 命令历史 我们在终端上敲过的命令,都有它的历史记录,比如此时按下向上键就会看到你之前最后输入的一条命令,再按就再往前翻,这里就开始学习认识命令历史 使用history命令查看历史命令: [[email protected] ~]# history 这里可以看到我已经输入

五周第三次课 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.

8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 shell是一个命令解释器,提供用户和机器之间的交互支持特定语法,比如逻辑判断.循环(if for whell)每个用户都可以有自己特定的shellCentOS7默认shell为bash(Bourne Agin Shell)还有zsh.ksh等 yum list |grep zsh 搜索yum 中是否有zsh # yum list |grep ksh 8.2 命令历史 she

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]