![在 sqlite3 交互式 shell 中启用自动完成功能](https://linux22.com/image/1337091/%E5%9C%A8%20sqlite3%20%E4%BA%A4%E4%BA%92%E5%BC%8F%20shell%20%E4%B8%AD%E5%90%AF%E7%94%A8%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%E5%8A%9F%E8%83%BD.png)
我在可以使用制表符补全的机器上使用 sqlite3(即,.read abc
随后按此TAB将自动完成为.read abcdefghij.db
。我想知道如何在我的个人机器上启用此功能。
两台机器都是 Ubuntu Linux,shell 是 bash。我指的是 sqlite 交互式提示中的自动完成功能。
最初发布于数据库管理员。
答案1
使用 readline 支持编译程序。Readline 是一个通用库,用于处理 bash 和 python 等解释器中的用户输入。获取源代码、依赖项并使用以下命令进行配置:
user@computer in: ~/src/sqlite-autoconf-3071602
$ ./configure --enable-readline=yes
有关详细信息,请参阅 INSTALL 文件。另外,值得一提的是,可能已经为你的发行版打包了带有 readline 支持的 sqlite3 二进制文件。查看一下。
答案2
您可以使用右包裹如果你不想编译 sqlite3,只需运行sudo apt install rlwrap
,然后在你的 中为 sqlite3 设置一个别名.bashrc
:
alias sqlite="rlwrap -a -N -c -i sqlite3"
该-c
选项为您提供文件名补全。
您还可以创建一个文件~/.rlwrap/sqlite3_completions
来获得关键字补全功能:
ABORT ACTION ADD AFTER ALL ALTER ANALYZE AND AS ASC ATTACH AUTOINCREMENT BEFORE BEGIN BETWEEN BY CASCADE CASE CAST CHECK COLLATE COLUMN COMMIT CONFLICT CONSTRAINT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP DATABASE DEFAULT DEFERRABLE DEFERRED DELETE DESC DETACH DISTINCT DROP EACH ELSE END ESCAPE EXCEPT EXCLUSIVE EXISTS EXPLAIN FAIL FOR FOREIGN FROM FULL GLOB GROUP HAVING IF IGNORE IMMEDIATE IN INDEX INDEXED INITIALLY INNER INSERT INSTEAD INTERSECT INTO IS ISNULL JOIN KEY LEFT LIKE LIMIT MATCH NATURAL NO NOT NOTNULL NULL OF OFFSET ON OR ORDER OUTER PLAN PRAGMA PRIMARY QUERY RAISE RECURSIVE REFERENCES REGEXP REINDEX RELEASE RENAME REPLACE RESTRICT RIGHT ROLLBACK ROW SAVEPOINT SELECT SET TABLE TEMP TEMPORARY THEN TO TRANSACTION TRIGGER UNION UNIQUE UPDATE USING VACUUM VALUES VIEW VIRTUAL WHEN WHERE WITH WITHOUT
该-i
选项使关键字完成不区分大小写。