MySQL 명령 줄 색상 프롬프트에 색상을 추가하고 싶습니다.
지금까지 스크립트 (database.sh)에 있습니다.
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
내가 좋아하는 것 root
할 빨간색 , @
수 블루 , localhost
로 녹색 과 database
로 시안 :
root@localhost:database>
내 스크립트 에서이 작업을 수행 할 수 있습니까?
MySQL 명령 줄 색상 프롬프트에 색상을 추가하고 싶습니다.
지금까지 스크립트 (database.sh)에 있습니다.
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
내가 좋아하는 것 root
할 빨간색 , @
수 블루 , localhost
로 녹색 과 database
로 시안 :
root@localhost:database>
내 스크립트 에서이 작업을 수행 할 수 있습니까?
답변:
할 수 없다고 말하는 사람들의 말을 듣지 마십시오. 이리:
$ alias colormysql=$(echo -e 'mysql --prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\h\x1B[0m:\x1B[36m\\d>\x1B[0m "')
그때:
$ colormysql -hHOSTNAME -uUSERNAME -pPASSWORD ...
$(foo)
foo의 결과를 실행합니다 (이 경우 echo 출력). echo -e는 \ x1b를 이스케이프 문자로 확장합니다. \ x1b [31m은 현재 색상을 빨간색으로 설정하는 터미널 제어 코드입니다. 기타 등등. \ x1b [0m은 색상을 기본 터미널 색상으로 반환합니다.
mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
\001
와 \002
주변을 사용하십시오 readline
. $ alias colormysql=$(echo -e 'mysql --prompt="\001\x1B[31m\002\\u\001\x1B[34m\002@\001\x1B[32m\002\\h\001\x1B[0m\002:\001\x1B[36m\002\\d>\001\x1B[0m\002 "')
렌더링 문제의 어떤 종류가있는 것 같습니다 복사 및 붙여 넣기 그 브라우저에서 \002:\001
명령의 부분으로 클립 보드에 투입되고있다 \002:\<200c><200b>001
(여기서 <200c>
및 <200b>
않은 워드에서 비 인쇄 문자, 아마도 CR / NL입니다 외장).
1 단계. 설정된 프롬프트로 정상적으로 로그인하는 방법을 이해합니다.
eric@dev ~ $ mysql --host=yourhost.com -u username --prompt="foobar> " -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 711
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
foobar>
2 단계. echo를 통해 해석 된 표현식을 'alias'로 파이프하는 방법을 이해하십시오.
위의 1 단계와 정확히 동일합니다.
eric@dev ~ $ alias penguins=$(echo -e 'mysql --host=yourhost.com -u dev --prompt="foobar> " -p')
eric@dev ~ $ penguins
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 713
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
foobar> exit
Bye
eric@dev ~ $
3 단계. echo -e가 색상 표현을 평가하는 방법 이해 :
"foobar>"프롬프트가 빨간색으로 표시됩니다.
alias penguins=$(echo -e 'mysql --host=yourhost.com -u dev --prompt="\x1B[31mfoobar>\x1B[0m " -p')
penguins
이처럼 :
4 단계. 여기서 무슨 일이 일어나고 있는지 혼란 스러울 경우 :
표현을보십시오 : \x1B[31mfoobar>\x1B[0m
세 부분으로 구성됩니다.
code what it means:
\x1B[31m Start colorizing, 31m is red.
foobar> prompt text
\x1B[0m Stop colorizing.
4 단계. 고급, 프롬프트를 정말 멋지게 만듭니다.
eric@dev ~ $ alias penguins=$(echo -e 'mysql --host=yourhost.com -u dev --prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\v\x1B[0m:\x1B[36m\\d>\x1B[0m " -p')
eric@dev ~ $ penguins
이 거대한 코드의 기능에 대해 혼란 스러울 경우 :
\x1B[31m\\u\x1B[34m@\x1B[32m\\v\x1B[0m:\x1B[36m\\d>\x1B[0m
설명:
Code Note
\x1B[31m Start colorizing red
\\u escape the backslash for passage through echo, and print username
\x1B[34m Start colorizing dark blue
@ literal at sign
\x1B[32m Start colorizing green
\\v escape the backslash for passage through echo, print server version
\x1B[0m Stop colorizing
: literal colon
\x1B[36m Start colorizing cyan
\\d> Backslash for passage through echo, print default db and >
\x1B[0m Stop colorizing.
와우 많은 코드.
readline
줄 길이에 대해 혼동되지 않고 mysql
명령 줄 에서 여러 줄을 편집하지 않도록 터미널 코드를 올바르게 이스케이프하는 방법에 대한 아이디어가 있습니까? (여러 줄을 쓴 다음 백 스페이스를 길게 누르십시오)
프롬프트가 터미널의 제목에 있기를 원했습니다. 본질적으로 다른 프롬프트 코드 인 컬러 프롬프트를 원할 때와 같은 문제입니다. 이것을 가로 질러 colormysql
답변에 언급 된 것과 같은 특별한 별칭을 기억하지 않고도 할 수 있는지 궁금했습니다 .
.bashrc
내 컴퓨터에서 트릭을 수행하는 다음을 추가했습니다 .
export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")
이것이하는 것은 변수에 echo -e
원시 이스케이프 문자 (심볼 문자가 아닌)를 생성하는 데 사용 됩니다 MYSQL_PS1
. 이것은 색상에도 적용됩니다.
매우 유감스러운 답변이지만 할 수는 없습니다.
ANSI 이스케이프 시퀀스 사용과 관련하여 MySQL은 다음을 허용합니다 .
옵션 값에 이스케이프 시퀀스“\ b”,“\ t”,“\ n”,“\ r”,“\”및“\ s”를 사용하여 백 스페이스, 탭, 줄 바꿈, 캐리지 리턴, 백 슬래시 및 공백 문자
cmjdmiller의 답변과 관련하여 grc 는 "pager"를 통해 MySQL 셸의 출력을 표시하는 기능 만합니다 .
당신이 할 수있는 최선의 방법은 다음 과 같이 rlwrap을 사용 하는 것
rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
입니다. 그러나 전체 프롬프트를 색상으로 표시하므로 세밀한 제어가 불가능합니다. 암호는 일반 텍스트로 표시되므로주의하십시오.