Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am using sqlite3 on a machine where I can use tab completion (ie .read abc will autocomplete to .read abcdefghij.db. I would like to know how to enable this on my personal machine.

Both machines are ubuntu linux and the shell is bash. I am referring to autocompletion in the sqlite interactive prompt.

Originally posted on dba.

share|improve this question
up vote 8 down vote accepted

Compile the program with readline supoort. Readline is a common library that handles user input in interpreters such as bash and python. Fetch the source, the dependencies and configure with:

user@computer in: ~/src/sqlite-autoconf-3071602
$ ./configure --enable-readline=yes

Consult the INSTALL file for details. Also, it's worth mentioning that there are probably binaries of sqlite3 with readline support already packaged for your distro. Look around.

share|improve this answer

You can use rlwrap if you don't want to compile sqlite3. Just run sudo apt-get install rlwrap, and then set up an alias for sqlite3 in your .bashrc:

alias sqlite="rlwrap -a -N -c -i sqlite3"

The -c option gives you filename completions.

And you can create a file ~/.rlwrap/sqlite3_completions to have keyword 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

The -i option makes keyword completion case insensitive.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.