programing

MySQL 명령줄 클라이언트의 자동 완성

newsource 2022. 9. 21. 00:06

MySQL 명령줄 클라이언트의 자동 완성

Linux를 비롯한 많은 시스템에서 터미널을 탐색할 때 를 눌러 디렉토리 또는 파일 이름을 자동으로 완료할 수 있습니다.

MySQL 단말기에 그런 것이 있는지 궁금합니다.예를 들어, 의 설명을 취득하고 싶은 경우someTableWithRidiculousLongName타이핑도 할 수 있고describe someTableW그러면 나머지는 자동으로 완성됩니다.

MySQL 단말기에 그런 게 있나요?

파일 편집 또는 생성:.my.cnf다음을 포함하는 홈 디렉토리:

[mysql]
auto-rehash

MySQL 프롬프트 내에서 자동 완료를 활성화하려면 다음과 같이 입력합니다.

mysql> \#

그런 다음 다음을 입력할 수 있습니다.

mysql> describe someTableW[TAB]

입수 방법:

mysql> describe someTableWithRidiculousLongName

추가 옵션을 사용하여 MySQL 콘솔 시작--auto-rehash,예.

mysql --auto-rehash -u root -p

오래된 질문이지만 고급 자동 완성 기능을 갖춘 MySql CLI 클라이언트 mycli를 발견했습니다.내장된 자동 재해시 기능보다 훨씬 스마트합니다.

OS X 10.11.6에서는 위에서 설명한 바와 같이 --auto-re-hash를 설정했지만 동작하지 않았습니다.(이것은 OS X이므로 mysql은 BSD libedit 라이브러리와 함께 컴파일됩니다.)

그리고 mysql 클라이언트의 vi 키 바인딩을 ~/.editrc를 작성하여 bind -v라는 한 줄로 설정했다는 것을 기억했습니다.이것은 mysql 클라이언트에서 vi와 같은 네비게이션을 제공하는 데 매우 효과적이지만, 열 이름 완성이 깨졌습니다(.editrc를 삭제하여 확인할 수 있었습니다).

그래서 조금 조사해보니, ~/.editrc는 적어도 다음 행이 있어야 합니다.

bind -v
bind \\t rl_complete

이 추가 행이 있으면 mysql에서 이름 완성이 올바르게 동작하고 vi와 같은 내비게이션도 동작합니다.(mysql 클라이언트의 네비게이션을 크게 향상시키는 다른 .editrc 설정이 있지만, 이 시점에서 논의의 스레드를 시작할 수는 없습니다.

자동 재해시에 관한 주의사항:

자동완료를 이노블로 하면 mysql 설정 파일 편집이 실행됩니다.

[mysql]
auto-rehash

모든 사용자에 대해 실행할 수도 있고 한 명의 사용자에 대해서만 실행할 수도 있습니다.

/etc/my.cnf: 모든 사용자

~/.my.cnf: 실제 사용자

자동 완성 추가를 비활성화할 수도 있습니다.

no-auto-rehash

출처: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html

명령 기록을 기반으로 자동 완료할 수도 있습니다.입력을 시작한 다음 바인딩된 키를 호출합니다.ed-search-prev-history그리고.ed-search-next-history이는 mysql이 libedit을 지원하는 경우에 적용됩니다.기본 키바인딩은 Ctrl+P 및 Ctrl+N이지만 .editrc에서 커스터마이즈할 수 있습니다.Ctrl-up 및 Ctrl-down의 예를 다음에 나타냅니다.

# start typing, then press Ctrl-Up
bind "\e[1;5A" ed-search-prev-history
# start typing, then press Ctrl-Up, then Ctrl-Down
bind "\e[1;5B" ed-search-next-history

으로 readline을 기반으로 했습니다.history-search-backward ★★★★★★★★★★★★★★★★★」history-search-forward을 사용하다.inputrc의 .inputrc의 .inputrc.「 」 「 」 :

# these are the key bindings for the readline library
# start typing, then press Ctrl-Up
"\e[1;5A": history-search-backward
# start typing, then press Ctrl-Up, then Ctrl-Down
"\e[1;5B": history-search-forward

이렇게 .selCtrl+Up, Ctrl+Up을 합니다.select * from some_long_table_name까까 사사 ?령 령? ???

언급URL : https://stackoverflow.com/questions/8332338/autocompletion-in-the-mysql-command-line-client