Linux 및 기타 여러 시스템에서 터미널을 탐색 할 때을 눌러 Tab디렉토리 또는 파일 이름을 자동 완성 할 수 있습니다 .
MySQL 터미널에 이와 같은 것이 있는지 궁금합니다. 예를 들어, I에 대한 설명을 얻으려면 다음을 someTableWithRidiculousLongName
입력 하면 나머지는 자동 완성됩니다.describe someTableW
Tab
MySQL 터미널에 이와 비슷한 것이 있습니까?
답변:
다음을 .my.cnf
포함하는 홈 디렉토리에서 라는 파일을 편집하거나 만듭니다 .
[mysql]
auto-rehash
--disable-auto-rehash
플래그 와 함께 선택 사항입니다 . 하지만 이제는 기본적으로 켜졌습니다.
MySQL 프롬프트 유형 내에서 자동 완성을 활성화하려면 :
mysql> \#
그 후에 다음을 입력 할 수 있습니다.
mysql> describe someTableW[TAB]
얻으려면 :
mysql> describe someTableWithRidiculousLongName
mysql> rehash
- "\ #"대신 다음과 같이 "rehash"mysql 명령을 입력 할 수도 있습니다. "재해시"로 공유하는 것이 저와 같은 사람들에게는 기억하기 더 쉬울 수 있습니다. mysql> rehash
그 후에 자동 완성 기능이 작동하기 시작합니다!
추가 옵션으로 시작 MySQL의 콘솔 --auto-rehash
, 즉
mysql --auto-rehash -u root -p
이것이 오래된 질문이라는 것을 알고 있지만 고급 자동 완성 기능이있는 매우 유용한 MySql cli 클라이언트 인 mycli를 찾았습니다 . 내장 된 자동 재해시 기능보다 훨씬 더 똑똑합니다.
auto-rehash
내에서 작동하지 않습니다. mycli와 boom으로 전환하고 .... 프로처럼 일했습니다.
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-backward
및 history-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
하면 이전에 사용한 명령이 표시됩니다.