명령 프롬프트를 구성하기 위해 .bashrc를 사용자 정의하는 방법은 무엇입니까?

명령 프롬프트를 구성하기 위해 .bashrc를 사용자 정의하는 방법은 무엇입니까?

표시되는 색상과 텍스트를 수정하기 위해 Bash 프롬프트를 변경하는 쉬운 방법이 있습니까? 에서 이 작업이 완료되었다고 들었지만 .bashrc수정하는 쉽고 좋은 방법을 찾지 못했습니다. Bash에서 색상을 표현하는 방법은 무엇입니까?

답변1

나는 이것을 내에서 정의하곤 했습니다 .bashrc.

export e="\e["

function cls          { echo -n "${e}H${e}J${e}0m"; }
function rcls         { echo -n "${e}H${e}J${e}S${e}H${e}J${e}0m${e}u${e}J"; } # not quite yet !
# rcls only works when no funny codes have been issued in between, i.e. the buffer is clean
# below the current screen. And then there can be issues with the first line of the buffer.

function bright       { echo -n "${e}1m"; }
function normal       { echo -n "${e}0m"; }
function colour       { echo -n "${e}$1;$2;$3m"; }
function black        { echo -n "${e}30m"; }
function bg_black     { echo -n "${e}40m"; }
function red          { echo -n "${e}31m"; }
function bg_red       { echo -n "${e}41m"; }
function green        { echo -n "${e}32m"; }
function bg_green     { echo -n "${e}42m"; }
function yellow       { echo -n "${e}33m"; }
function bg_yellow    { echo -n "${e}43m"; }
function blue         { echo -n "${e}34m"; }
function bg_blue      { echo -n "${e}44m"; }
function magenta      { echo -n "${e}35m"; }
function bg_magenta   { echo -n "${e}45m"; }
function cyan         { echo -n "${e}36m"; }
function bg_cyan      { echo -n "${e}46m"; }
function white        { echo -n "${e}37m"; }
function bg_white     { echo -n "${e}47m"; }
function c_up         { echo -n "${e}$1A"; }
function c_down       { echo -n "${e}$1B"; }    # within
function c_right      { echo -n "${e}$1C"; }
function c_left       { echo -n "${e}$1D"; }    # screen
function c_pos        { echo -n "${e}$1;$2f"; } # [Hf]
function c_line       { echo -n "${e}$1d"; }
function screentop    { echo -n "${e}H"; }      # [Hdf]
function linetop      { echo -n "${e}G"; }
function buffertop    { echo -n "${e}u"; }      # depends on other control characters ?
function tab          { echo -n "${e}I"; }
function backtab      { echo -n "${e}Z"; }
function scrolldown   { echo -n "${e}$1T"; }    # within screen
function scrolldown_B { echo -n "${e}$1L"; }    # scroll down below cursor
function scrollup_B   { echo -n "${e}$1M"; }    # scroll up below cursor
function clear        { echo -n "${e}J"; }      # delete to end of screen
function cleanbuffer  { echo -n "${e}S"; }      # copies first screen to bottom and clears
                                                # everything else above the cursor.
#function xxx { echo -n "${e}xxx"; }

export -f bright normal colour
export -f black bg_black red bg_red green bg_green yellow bg_yellow
export -f blue bg_blue magenta bg_magenta cyan bg_cyan white bg_white
export -f c_up c_down c_right c_left c_pos c_line
export -f screentop linetop buffertop tab backtab
export -f scrolldown scrolldown_B scrollup_B clear cleanbuffer

그런 다음 다음과 같이 사용할 수 있습니다.

PS1_init="\n$(bright)$(black)$(hostname):\w\n$(bg_blue)"
PS1_end="$(normal)$(bright)\n\! -> $(normal)$(clear)"
export PS1="$PS1_init"'$(date)'"$PS1_end"

이것은 당신에게 도움이 될 수 있습니다.

변수 대신 함수로 바꾼 이유는 게으름 때문입니다. 그냥 타이핑을 그만하고 싶어요. 물론 효율성 변수를 찾아보면 더 좋겠죠.

궁극적으로 이는 특정 터미널에만 적합합니다. 따라서 도움이 필요하면 bash나 다른 셸 문서가 아닌 터미널 문서를 참조하세요.

답변2

Bash는 Ansi 색 구성표를 사용합니다 - Wikipedia 기사: http://en.wikipedia.org/wiki/ANSI_escape_code#Colors

예를 들어, 내 프롬프트는 다음과 같습니다. (나는 프롬프트를 별도의 줄에 표시하는 것을 좋아하지만 모든 사람이 그렇게 하는 것은 아닙니다. 또한 내 용어의 배경은 어둡습니다. 용어가 밝다면 색상을 조정하십시오.)

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[31m\]\h \[\e[0;36m\]\t \[\e[93m\]\w\[\e[36m\] p$$-\!-\$\[\e[0m\]\n\$ '

특수 프롬프트 값은 Bash 매뉴얼 페이지의 "프롬프트"에 설명되어 있습니다.

\u  the username of the current user
\h  the hostname up to the first `.'
\t  the current time in 24-hour HH:MM:SS format
\w  the current working  directory,  with 
    $HOME  abbreviated with  a tilde
    (uses the value of the PROMPT_DIRTRIM variable)
$$  PID of the Bash (helps distinguish my many terms.
    Useful, eg, if I have to kill something.
\!  the history number of this command
\n     newline
\$  if the effective UID is 0, a #, otherwise a $

답변3

예를 들어 색칠의 경우 다음과 같이 할 수 있습니다.

간단히다음 줄을 추가합니다.

export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "

시사: 여기에 이미지 설명을 입력하세요.

이것은 내가 가장 좋아하는 색상입니다. m예를 들어 ANSI 색상 코드를 변경하여 프롬프트의 각 부분 색상을 사용자 정의할 수 있습니다 .34m

ANSI 색상 코드 목록:

  • 검정색: 30m
  • 빨간색: 31m
  • 녹색: 32m
  • 노란색: 33m
  • 파란색: 34m
  • 보라색: 35m
  • 청록색: 36m
  • 흰색: 37m

답변4

이러한 답변 중 어느 것도 즉각적인 사용자 정의가 어떻게 작동하는지 이해하는 데 도움이 되지 않았습니다. 다양한 포럼, 스택, 위키 등을 몇 시간 동안 검색하여 수집한 내용은 다음과 같습니다.

나만의 팁 찾기

nano ~/.bashrc

수동으로 검색하거나 다음 명령을 사용하여 검색하십시오 bashrc.PS1Alt+F. 이것은 첫 번째 bash 프롬프트이며 명령을 입력할 때 표시되는 것입니다. PS[2-4]도 존재하지만 거의 사용되지 않습니다.

색상 정의

선 위에 다음 색상 정의를 추가하십시오 PS1.

# Color Variables
c1='\[\033[0;30m\]' # Non-bold color 1
C1='\[\033[1;30m\]' # Bold color 1
c2='\[\033[0;31m\]' # Non-bold color 2
C2='\[\033[1;31m\]' # Bold color 2
c3='\[\033[0;32m\]' # Non-bold color 3
C3='\[\033[1;32m\]' # Bold color 3
c4='\[\033[0;33m\]' # Non-bold color 4
C4='\[\033[1;33m\]' # Bold color 4
c5='\[\033[0;34m\]' # Non-bold color 5
C5='\[\033[1;34m\]' # Bold color 5
c6='\[\033[0;35m\]' # Non-bold color 6
C6='\[\033[1;35m\]' # Bold color 6
c7='\[\033[0;36m\]' # Non-bold color 7
C7='\[\033[1;36m\]' # Bold color 7
c8='\[\033[0;37m\]' # Non-bold color 8
C8='\[\033[1;37m\]' # Bold color 8
NC='\[\033[0m\]'    # Back to default color

색상 구성

이제 (아마도 그래픽) 터미널에 몇 가지 사용자 정의 옵션이 있어야 합니다. 예를 들어, 저는 KDE를 사용하고 있습니다위로: Settings > Edit Current Profile... > Appearance > Edit...이 사용자 정의 인터페이스를 표시합니다.

Konsole 색상 사용자 정의

이제 원하는 색상으로 변경해 보세요. 전경색은 기본 색상이고, 색상 1~8은 선택할 수 있는 색상입니다. 정의가 0에서 시작하는 것은 아니지만 이 사용자 정의 및 변수는 1에서 시작합니다.

힌트의 색상 사용

내 기본 프롬프트에는 다음이 있습니다.

PS1="[\u@\h \W]\$ "

\u당신 것인가요?Sername, \h그것은 당신 것입니다시간호스트 이름 은 다음 \W과 같습니다.와트이는 현재 있는 디렉터리(어느 디렉터리)이며 \$프롬프트( #userid=0 [root]인 경우)입니다.

$c1변경하려는 색상 앞에 $c2` 등을 추가하여 맞춤 설정할 수 있습니다 . 예를 들어 다음과 같습니다.

PS1="$c2[$C8\u$c2@$C7\h $C6\W$c2]$C2\$$NC "

그 결과는 다음과 같습니다.

내 bash 프롬프트

NC참고: 기본 색상으로 재설정하려면 마지막에 를 사용해야 합니다 . 그렇지 않으면 프롬프트(입력) 뒤의 모든 항목이 프롬프트의 마지막 색상이 됩니다.

관련 정보