เปิดใช้งานการเติมข้อความอัตโนมัติในเชลล์แบบโต้ตอบ sqlite3


22

ฉันใช้ sqlite3 บนเครื่องที่ฉันสามารถใช้การเติมแท็บได้ (เช่น .read abc จะเติมข้อความอัตโนมัติให้เป็น. อ่าน abcdefghij.db ฉันต้องการทราบวิธีเปิดใช้งานสิ่งนี้บนเครื่องส่วนตัวของฉัน

เครื่องทั้งสองเป็น Ubuntu Linux และเชลล์ทุบตี ฉันหมายถึงการเติมข้อความอัตโนมัติในข้อความโต้ตอบ sqlite

โพสต์ในฐานข้อมูล

คำตอบ:


12

รวบรวมโปรแกรมด้วย readline supoort Readline เป็นห้องสมุดทั่วไปที่จัดการอินพุตของผู้ใช้ในล่ามเช่น bash และ python ดึงแหล่งที่มาการอ้างอิงและกำหนดค่าด้วย:

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

ศึกษาไฟล์ INSTALL เพื่อรับรายละเอียด นอกจากนี้ยังมีมูลค่าการกล่าวถึงว่าอาจมีไบนารีของ sqlite 3 พร้อมการสนับสนุน readline ซึ่งบรรจุอยู่ในเครื่อง distro ของคุณแล้ว มองไปรอบ ๆ.


1
คุณอาจพลาดแพ็คเกจ "-dev" ที่มีส่วนหัวที่จำเป็น
ЯрославРахматуллин

15

คุณสามารถใช้rlwrapถ้าคุณไม่ต้องการคอมไพล์ sqlite3 เพียงแค่เรียกใช้sudo apt install rlwrapแล้วตั้งชื่อแทนสำหรับ sqlite3 ใน.bashrc:

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

-cตัวเลือกที่ช่วยให้คุณ filename สำเร็จ

และคุณสามารถสร้างไฟล์~/.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
คำตอบนี้สมควรได้รับการโหวตมากขึ้น นอกจากนี้โปรดทราบว่าฉันต้องลบ-Nตัวเลือกเพื่อความสมบูรณ์ในการทำงานกับ sqlite3 ของ Ubuntu
xhienne

นอกจากนี้ยังมีไดเรกทอรี/usr/share/rlwrap/completions(ตามเอกสารman rlwrap) เพื่อวางไฟล์สำหรับระบบที่สมบูรณ์สำหรับผู้ใช้ทุกคน สิ่งหนึ่งที่ควรทราบชื่อไฟล์ที่สมบูรณ์ในนั้นไม่ควรลงท้ายด้วย_completionคำต่อท้ายเนื่องจากเป็นกรณีที่มี~/.rlwrapไดเรกทอรีต่อผู้ใช้

1
rlwrap -a -N -c -i -f ~/.rlwrap/sqlite3_completions sqlite3สำหรับผู้ใช้ Debian echo '.help' | sqlite3 | grep -o '^\.[a-z]* ' >> ~/.rlwrap/sqlite3_completionsเพื่อเติมคำสั่งจุดอัตโนมัติทั้งหมด
zhazha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.