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


81

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

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

MySQL 터미널에 이와 비슷한 것이 있습니까?


2
, mycli을 시도 github.com/dbcli/mycli
CodyChan

답변:


123

다음을 .my.cnf포함하는 홈 디렉토리에서 라는 파일을 편집하거나 만듭니다 .

[mysql]
auto-rehash

반드시 더 나은 선택하지 @galarant
rkmax

2
@rkmax-여전히 --disable-auto-rehash플래그 와 함께 선택 사항입니다 . 하지만 이제는 기본적으로 켜졌습니다.
T Zengerink

3
하지만 소문자로 명령을 입력하면 작동하지 않습니다.
alhelal

85

MySQL 프롬프트 유형 내에서 자동 완성을 활성화하려면 :

mysql> \#

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

mysql> describe someTableW[TAB]

얻으려면 :

mysql> describe someTableWithRidiculousLongName

7
이것이 기본값이 아닌 이유는 무엇입니까?
Oussama Elgoumri

1
간단하고 우아한
sp1rs

1
mysql> rehash - "\ #"대신 다음과 같이 "rehash"mysql 명령을 입력 할 수도 있습니다. "재해시"로 공유하는 것이 저와 같은 사람들에게는 기억하기 더 쉬울 수 있습니다. mysql> rehash 그 후에 자동 완성 기능이 작동하기 시작합니다!
janeshs

1
@OussamaElgoumri 우리 중 일부는 복잡한 쿼리를 명령 줄에 붙여 넣는 것을 좋아하기 때문에 이러한 쿼리에는 들여 쓰기를위한 탭 문자가 포함될 수 있습니다.
alexg

61

추가 옵션으로 시작 MySQL의 콘솔 --auto-rehash, 즉

mysql --auto-rehash -u root -p

7
나는 그것이 나를 위해 작동하지 않는 이유를 모른다! 탭은 탭으로 만 해석되며 자동 완성을 위해 아무 작업도 수행하지 않습니다.
Praveen Puglia 2013


1
Otheus는 지적으로 하나가 데이터베이스에 연결 한 후주의 tabcomplete에만 작동 unix.stackexchange.com/questions/270309/...
시므온

22

이것이 오래된 질문이라는 것을 알고 있지만 고급 자동 완성 기능이있는 매우 유용한 MySql cli 클라이언트 인 mycli를 찾았습니다 . 내장 된 자동 재해시 기능보다 훨씬 더 똑똑합니다.


7
훌륭한 대안!
kraxor

3
참으로 아, 최고 수준의 대답
smac89

1
auto-rehash내에서 작동하지 않습니다. mycli와 boom으로 전환하고 .... 프로처럼 일했습니다.
Rajesh Chaudhary

4

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 설정이 있지만 여기서는 토론 스레드를 시작할 수 없습니다.)


3

자동 재해시에 대한 몇 가지 참고 사항 :

자동 완성 기능을 활성화하면 mysql 구성 파일을 편집합니다.

[mysql]
auto-rehash

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

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

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

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

no-auto-rehash

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


1

명령 내역을 기반으로 자동 완성 할 수도 있습니다. 입력을 시작한 다음 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하면 이전에 사용한 명령이 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.