Bash
PS1 사용자 정의
수색…
PS1 프롬프트 변경
PS1을 변경하려면 PS1 쉘 변수의 값을 변경하기 만하면됩니다. 이 값은 배포판에 따라 ~/.bashrc
또는 /etc/bashrc
파일에서 설정할 수 있습니다. PS1은 다음과 같은 일반 텍스트로 변경할 수 있습니다.
PS1="hello "
플레인 텍스트 외에도 다양한 백 슬래시 이스케이프 특수 문자가 지원됩니다.
체재 | 동작 |
---|---|
\a | ASCII 벨 문자 (07) |
\d | "Weekday Month Date"형식의 날짜 (예 : "Tue May 26") |
\D{format} | 형식은 strftime (3)에 전달되고 결과는 프롬프트 문자열에 삽입됩니다. 빈 형식은 로케일 고유의 시간 표현을 생성합니다. 중괄호가 필요합니다. |
\e | ASCII 이스케이프 문자 (033) |
\h | 첫 번째 호스트 이름 '.' |
\H | 호스트 명 |
\j | 쉘이 현재 관리하고있는 작업의 수 |
\l | 쉘의 터미널 디바이스 명의 basename |
\n | 개행 문자 |
\r | 캐리지 리턴 |
\s | 쉘의 이름, $ 0 (최종 슬래시 뒤에 오는 부분)의 기본 이름 |
\t | 24 시간 HH : MM : SS 형식의 현재 시간 |
\T | 12 시간 HH : MM : SS 형식의 현재 시간 |
\@ | 오전 12시 / 오후 형식의 현재 시간 |
\A | 24 시간 HH : MM 형식의 현재 시간 |
\u | 현재 사용자의 사용자 이름 |
\v | bash 버전 (예 : 2.00) |
\V | 배시, 버전 + 패치 레벨 (예 : 2.00.0) |
\w | $ HOME이 물결표로 축약 된 현재 작업 디렉토리 |
\W | 현재 작업 디렉토리의 기본 이름. $ HOME은 물결표로 축약됩니다. |
\! | 이 명령의 히스토리 번호 |
\# | 이 명령의 명령 번호 |
\$ | 유효 UID가 0의 경우는 #, 그렇지 않은 경우는 $ |
\nnn* | 8 진수 nnn에 해당하는 문자 |
\ | 백 슬래시 |
\[ | 터미널 제어 시퀀스를 프롬프트에 삽입하는 데 사용할 수있는 일련의 비 인쇄 문자를 시작합니다. |
\] | 일련의 비 인쇄 문자를 끝내십시오. |
예를 들어 PS1을 다음과 같이 설정할 수 있습니다.
PS1="\u@\h:\w\$ "
그리고 출력 할 것이다 :
user @ machine : ~ $
PROMPT_COMMAND를 사용하여 git 분기 표시
자식 저장소의 폴더에 있다면 현재있는 지점을 표시하는 것이 좋습니다. ~/.bashrc
또는 /etc/bashrc
에 다음을 추가하십시오 (이 작업을하려면 필수).
function prompt_command {
# Check if we are inside a git repository
if git status > /dev/null 2>&1; then
# Only get the name of the branch
export GIT_STATUS=$(git status | grep 'On branch' | cut -b 10-)
else
export GIT_STATUS=""
fi
}
# This function gets called every time PS1 is shown
PROMPT_COMMAND=prompt_command
PS1="\$GIT_STATUS \u@\h:\w\$ "
git 저장소 내부의 폴더에 있으면 다음과 같이 출력됩니다.
branch user @ machine : ~ $
그리고 우리가 보통 폴더 안에 있다면 :
user @ machine : ~ $
터미널 프롬프트에서 git 브랜치 이름 보이기
PS1 변수에 함수를 넣을 수 있습니다. 단 하나 인용하거나 특수 문자로 이스케이프를 사용해야합니다.
gitPS1(){
gitps1=$(git branch 2>/dev/null | grep '*')
gitps1="${gitps1:+ (${gitps1/#\* /})}"
echo "$gitps1"
}
PS1='\u@\h:\w$(gitPS1)$ '
다음과 같은 프롬프트가 표시됩니다.
user@Host:/path (master)$
노트:
-
~/.bashrc
또는/etc/bashrc
또는~/.bash_profile
또는~./profile
파일 (OS에 따라 다름)을 변경하고 저장하십시오. - 파일을 저장 한 후
source ~/.bashrc
(distro specific)를 실행하십시오.
터미널 프롬프트에 시간 표시
timeNow(){
echo "$(date +%r)"
}
PS1='[$(timeNow)] \u@\h:\w$ '
다음과 같은 프롬프트가 표시됩니다.
[05:34:37 PM] user@Host:/path$
노트:
-
~/.bashrc
또는/etc/bashrc
또는~/.bash_profile
또는~./profile
파일 (OS에 따라 다름)을 변경하고 저장하십시오. - 파일을 저장 한 후
source ~/.bashrc
(distro specific)를 실행하십시오.
터미널 프롬프트 색상 화 및 사용자 정의
저자가 개인 PS1
변수를 설정하는 방법은 다음과 같습니다.
gitPS1(){
gitps1=$(git branch 2>/dev/null | grep '*')
gitps1="${gitps1:+ (${gitps1/#\* /})}"
echo "$gitps1"
}
#Please use the below function if you are a mac user
gitPS1ForMac(){
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
timeNow(){
echo "$(date +%r)"
}
if [ "$color_prompt" = yes ]; then
if [ x$EUID = x0 ]; then
PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;31m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;31m\]:/#\[\033[00m\] '
else
PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;32m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;32m\]:/$\[\033[00m\] '
fi
else
PS1='[$(timeNow)] \u@\h \w$(gitPS1) :/$ '
fi
색상 참조 :
# Colors
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
노트:
~/.bashrc
또는/etc/bashrc
또는~/.bash_profile
또는~./profile
파일 (OS에 따라 다름)을 변경하고 저장하십시오.root
경우/etc/bash.bashrc
또는/root/.bashrc
파일을 편집해야 할 수도 있습니다.파일을 저장 한 후
source ~/.bashrc
(distro specific)를 실행하십시오.참고 :
~/.bashrc
변경 사항을 저장 한 경우~/.bash_profile
에source ~/.bashrc
를 추가하여 터미널 응용 프로그램이 시작될 때마다PS1
변경 내용이 기록되도록하십시오.
이전 명령 반환 상태 및 시간 표시
때로는 이전 명령의 반환 상태를 나타내는 시각적 힌트가 필요합니다. 다음 스 니펫은 PS1의 헤드에 놓습니다.
__stat () 함수는 새 PS1이 생성 될 때마다 호출되어야하며, 그렇지 않으면 .bashrc 또는 .bash_profile의 마지막 명령의 반환 상태를 유지해야합니다.
# -ANSI-COLOR-CODES- #
Color_Off="\033[0m"
###-Regular-###
Red="\033[0;31m"
Green="\033[0;32m"
Yellow="\033[0;33m"
####-Bold-####
function __stat() {
if [ $? -eq 0 ]; then
echo -en "$Green ✔ $Color_Off "
else
echo -en "$Red ✘ $Color_Off "
fi
}
PS1='$(__stat)'
PS1+="[\t] "
PS1+="\e[0;33m\u@\h\e[0m:\e[1;34m\w\e[0m \n$ "
export PS1