sqlite3 대화식 쉘에서 자동 완성 사용


22

탭 완성을 사용할 수있는 컴퓨터에서 sqlite3을 사용하고 있습니다 (예 : .read abc는 .read abcdefghij.db로 자동 완성됩니다. 개인 컴퓨터에서 이것을 활성화하는 방법을 알고 싶습니다.

두 머신 모두 우분투 리눅스이고 쉘은 bash입니다. sqlite 대화식 프롬프트에서 자동 완성을 언급하고 있습니다.

원래 dba에 게시되었습니다 .

답변:


12

readline supoort로 프로그램을 컴파일하십시오. Readline은 bash 및 python과 같은 인터프리터에서 사용자 입력을 처리하는 공통 라이브러리입니다. 소스, 종속성을 가져오고 다음을 사용하여 구성하십시오.

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

자세한 내용은 INSTALL 파일을 참조하십시오. 또한 배포판에 이미 readline을 지원하는 sqlite3 바이너리가있을 수 있습니다. 둘러 봐


1
필요한 헤더가있는 "-dev"패키지가 누락되었을 수 있습니다.
Ярослав Рахматуллин

15

sqlite3를 컴파일하지 않으려면 rlwrap 을 사용할 수 있습니다 . 를 실행 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옵션은 키워드 완성 대소 문자를 구분하지 않습니다.


2
이 답변에는 더 많은 투표권이 있습니다. 또한 -NUbuntu의 sqlite3에서 작업을 완료 하려면 옵션 을 제거해야했습니다 .
xhienne

모든 사용자를 위해 시스템 전체의 완성 파일을 저장하는 디렉토리 도 있습니다 /usr/share/rlwrap/completions( man rlwrap). 완료 파일 이름을 주목해야 할 것은 _completion사용자 별 ~/.rlwrap디렉토리 의 경우와 같이 접미사로 끝나지 않아야합니다 .

1
rlwrap -a -N -c -i -f ~/.rlwrap/sqlite3_completions sqlite3데비안 사용자를 위해. echo '.help' | sqlite3 | grep -o '^\.[a-z]* ' >> ~/.rlwrap/sqlite3_completions모든 도트 명령을 자동 완성합니다.
zhazha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.