[mysql] MySQL 명령 줄 클라이언트에서 자동 완성

Linux 및 기타 여러 시스템에서 터미널을 탐색 할 때을 눌러 Tab디렉토리 또는 파일 이름을 자동 완성 할 수 있습니다 .

MySQL 터미널에 이와 같은 것이 있는지 궁금합니다. 예를 들어, I에 대한 설명을 얻으려면 다음을 someTableWithRidiculousLongName입력 하면 나머지는 자동 완성됩니다.describe someTableWTab

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-rehash를 설정했지만 작동하지 않았습니다. (이것은 OS X이므로 mysql은 BSD libedit로 컴파일됩니다. 라이브러리로 .)

그런 다음 ~ / .editrc를 생성하여 bind -v 한 줄을 포함하여 mysql 클라이언트에 대한 vi 키 바인딩을 설정했음을 기억했습니다 . 이것은 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

이전 MySQL은이 작성한 Readline을 기반으로하고 있었다 history-search-backwardhistory-search-forward올바른 명령입니다. 구성은 .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

따라서 입력을 시작 sel하고 Ctrl-Up을 호출 select * from some_long_table_name하면 이전에 사용한 명령이 표시됩니다.