나는 여물통 퍼티에 연결된 리눅스 박스를 사용한다. bash와 함께 사용하면 키보드가 잘 작동하지만 sqlite shell (sqlite3 프로그램)을 사용하면 키가 열광합니다.
del=^[[3~
up=^[[A
left=^[[D
right=^[[C
down=^[[B
여기 내 env (관련 부분)가 있습니다 :
TERM=linux
SHELL=/bin/bash
SHLVL=1
INPUTRC=/etc/inputrc
창문에서와 같이 sqlite에서 일반적으로 키를 사용하고 싶습니다.
내 inputrc :
# do not bell on tab-completion
#set bell-style none
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
# Completed names which are symbolic links to
# directories have a slash appended.
set mark-symlinked-directories on
$if mode=emacs
# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word
# for rxvt
"\e[8~": end-of-line
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
$endif
답변
(FYI : 대부분의 터미널에서 해당 키에 의해 생성되는 정상적인 시퀀스입니다.이를 해석하는 터미널 또는 프로그램 / 라이브러리에 달려 있습니다. Ctrl+ v를 누른 다음 End또는 문자가 아닌 다른 키 를 눌러 작동중인 터미널에서이를 표시 할 수 있습니다. ctrl-V는 문자 그대로 처리 될 다음 키 누르기를 설정합니다.)
당신처럼 보인다 sqlite3
바이너리가 사용하지 않는 readline
, 또는 작성한 Readline 구성 ( inputrc
(덜 경우) 고장 bash
확인 생각을하고있다).
readline을 다음과 같이 사용하는 경우 확인 / 거부 할 수 which sqlite3
있습니다 PATH
.에 없는 경우 전체 경로로 바꾸 십시오 .
ldd `which sqlite3`
당신이 볼 경우 libreadline.so
또는 이와 유사한, 그것은 해야 하므로 확인 작업 INPUTRC
환경 변수를, ~/.inputrc
하고 /etc/inputrc
. 시도를 확인하기 위해 정적으로 링크 된 ( ) 기회 는 적습니다libreadline.a
.
strings -a `which sqlite3`| grep -i inputrc
문자열이있는 경우 INPUTRC
, ~/.inputrc
또는 /etc/inputrc
존재가 작성한 Readline이 정적으로 링크되고, 작동해야처럼 보인다.
(최상의 기능은 기본 버전 만 가져와 정보를 pragma compile_options
지원할 수 sqlite3
있지만 ( 지원되는 경우) 전체 기능을 사용할 수는 없으므로 바이너리에서 파킹해야합니다.)
readline을 나타내 ldd
거나 strings
나타내지 않으면 바이너리가 지원하지 않는 것이 확실합니다.
그렇지 않으면이 답변을 확인하십시오 : 우분투에서 readline 지원 SQLite
sqlite3
바이너리 에서 readline 지원이없는 경우 다음 중 하나를 사용하여 줄 바꿈 할 수 있습니다 .
rlwrap sqlite3
socat READLINE EXEC:"sqlite3"
둘 다 명령 행에서 히스토리 파일을 지정할 수 있습니다.
bash
readline이 제대로 작동하고 구성되어 있는지 확인하기 위해 readline 바인딩을 확인할 수도 있습니다 .
bind -p | egrep '\[[ABCD3].?":'
내 시스템에서 ( bash-3.x
내에서 실행 rxvt
) :
"\M-[3~": delete-char
"\M-[D": backward-char
"\M-[C": forward-char
"\M-[B": next-history
"\M-[A": previous-history
\M
는 “meta”이며 escape 와 동일 하므로 ” \M-
“a ” \e
“가 표시되는 위치도 작동합니다. 인쇄되면 이스케이프 는 ^[
(control- [) 로 표시됩니다 .