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=''
반응형