Увімкнути автоматичне заповнення в інтерактивній оболонці sqlite3


22

Я використовую sqlite3 на машині, де я можу використовувати завершення вкладки (тобто .read abc автоматично заповнюється.

Обидві машини є ubuntu linux, а оболонка - bash. Я маю на увазі автоматичне завершення в інтерактивному рядку sqlite.

Спочатку розміщено на dba .

Відповіді:


12

Складіть програму з супорту читання. Readline - це загальна бібліотека, яка обробляє введення користувача в інтерпретаторах, таких як bash і python. Отримати джерело, залежності та налаштувати за допомогою:

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

Зверніться до файла INSTALL для отримання детальної інформації. Крім того, варто згадати, що, ймовірно, є бінарні файли sqlite3 з підтримкою readline, вже упаковані для вашого дистрибутива. Озернись.


1
ви, мабуть, пропустили пакет "-dev" з необхідними заголовками.
Ярослав Рахматуллін

15

Ви можете використовувати rlwrap, якщо не хочете компілювати 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параметр робить регістр заповнення ключових слів нечутливим.


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для автоматичного заповнення всіх точкових команд.
джажа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.