IT 노트/리눅스

[Linux] 터미널에 path와 git브랜치명 표시하기 (bash, zsh)

czecze 2021. 10. 1. 20:45

터미널로 작업을 할 때 내가 작업하는 폴더나, 브랜치명이 표시 되어있으면 편하지 않나요?
그리고 $이 너무 오른쪽에 있으면 긴 명령어를 입력할 때 보기 불편하죠.

그래서 전 터미널의 표시 부분을 커스터마이즈 합니다. 

.bashrc

#path&브랜치표시
function git_ps() {
  git branch --no-color 2> /dev/null | sed -e 's/ //g' | sed -e '/^[^*]/d' -e 's/*\(.*\)/\1/'
}
export PS1='\[\033[32m\]\w\[\033[31m\] [$(git_ps)]\[\033[00m\] \n\$ '

현재의 출력내용을 확인하기

$ echo $PS1

표시내용의 의미

의미
\h 호스트명 (처음의 .까지)
\H 호스트명
\t 시간(24시간형식)
\u 유저명
\w 현재 디렉토리(풀path)
\W  현재 디렉토리

글자색설정

30 Black
31 Red
32 Green
33 Yellow
34 Blue
35 Magenta
36 Cyan
37 White
의미
\a ASCII Bell문자(07)를 표시한다(경고음을 울린다)
\d 「요일 월 일」의 형식(예:Fri Jan 5)의 날짜를 표시한다
\e ASCII의 이스케이프문자(033)를 표시한다
\h 호스트이름중에 첫「.」까지를 표시한다
\H 호스트이름을 표시한다
\n 줄바꿈
\r 복귀
\s 쉘이름을 표시한다
\t 현재의 시각을 24시간의 「HH:MM:SS」형식으로 표시한다
\T 현재의 시각을12시간의「HH:MM:SS」형식으로 표시한다
\@ 현재의 시각을12시간의「am/pm」형식으로 표시한다
\u 현재의 유저명을 표시한다
\v bash의 버전을 표시한다
\V bash의 릴리즈를 표시한다
\w 현재 작업디렉토리를 유저의 HOME디렉토리로부터 절대path로 표시한다
\W 현재의 작업디렉토리를 표시한다
\! 이 명령어의 히스토리번호を 표시한다
\# 이 명령어의 명령번호(현재의 쉘의 섹션중에 실행된 명령의 시퀀스의 위치)를 표시한다
\$ 실효한 UID가 0인 경우#가 되고, 그 이외의 경우 $가 된다
\nnn 8진수nnn에 대응하는 문자를 표시한다
\\ 백슬러쉬를 표시한다
\[ 비표시문자의 시퀀스를 개시한다. 이것을 사용하여 PROMPT중의 단말의 제어시퀀스를 포함할 수 있다
\] 비표시문자의 시퀀스를 종료한다

 

.zshrc

# VCS의 정보를 취득하는 zsh함수
autoload -Uz vcs_info
autoload -Uz colors # black red green yellow blue magenta cyan white
colors

# PROMPT변수안에서 변수참조
setopt prompt_subst

zstyle ':vcs_info:git:*' check-for-changes true #formats 설정항목에서 %c,%u 가 사용가능
zstyle ':vcs_info:git:*' stagedstr "%F{green}!" #commit 하지 않은 파일이 있는 경우
zstyle ':vcs_info:git:*' unstagedstr "%F{red}" #add 하지 않은 파일이 있는 경우
zstyle ':vcs_info:*' formats "%F{cyan}%c%u[%b]%f" #보통
zstyle ':vcs_info:*' actionformats '[%b|%a]' #rebase도중, merge 충돌, formats 이외의 표시 등

# glob에서 사용되는 메타문자(*,[],?…)를 허가
setopt nonomatch

# %b 브랜치정보
# %a 액션이름(merge같은..)
# %c changes
# %u uncommit

# PROMPT표시직전에 vcs_info 를 불러냄
precmd () { vcs_info }

# PROMPT(좌)
PROMPT='%{$fg[green]%}[%n@%m](%~)%{$reset_color%}'
PROMPT=$PROMPT'${vcs_info_msg_0_} 
%{${fg[green]}%}%}$%{${reset_color}%} '

# PROMPT(우)
RPROMPT=''
반응형