일모도원(日暮途遠) 개발자

[Shell] 프롬프터 변경하기 본문

OS/맥

[Shell] 프롬프터 변경하기

달님개발자 2022. 7. 4. 13:40

아직 작성중인 문서입니다.

 

현재 나는 zsh를 사용하고 있고, 기본적으로 내 맥의 터미널(사실 iTerm2이다)에 나타나는 프롬프터(맞나?)는 아래처럼 나온다.

사용자명@컴퓨터명 현재폴더명 이런씩으로 나오는데 한줄에 다 나오므로 길고 촌스럽다.

 

그래서 나는 아래처럼 두줄로 표시하게 하였다.

첫번째줄은 항상 한줄먼저 떼고 시작한다. 그리고 현재폴더명을 보여준다.

두번째 줄은 간단하게 > 만 보여주는데, git을 사용하는 폴더는 브랜치 명을 같이 보여준다.

 

 

위치럼 표시하기 위해서는 .zshrc를 수정해야한다.

cd 명령어로 홈 디렉토리로 가서 .zshrc를 열고 아래 문구를 추가해준다.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~%{$reset_color%}\n$(git_prompt_info)> '

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~%{$reset_color%}\n$(git_prompt_info)> '

 

수정한후에는 source ./.zshrc를 실행해주면 된다. (source대신 .을 사용해도 되나, 가끔 .이 잘 안먹을때가 있다.  그래서 난 항상 source명령어를 그대로 사용한다.)


위 명령어가 구체적으로 뭔지가 궁금한 사람은 아래글을 더 읽어보자.

모든 옵션은 아래를 참고하고 이 명령어를 구체적으로 살펴보자.

https://zsh.sourceforge.io/Doc/Release/Prompt-Expansion.html

 

zshrc에서는 %로 시작하면 프롬프터 익스텐션(명령어라 보면 된다)가 실행된다. PROMPT_PERCENT옵션이 set되어 있어야 한다고 하는데 어디에 저 옵션이 있는지는 찾지 못했다. 

 

참고로 아래의 화면에서 dand나 dios는 내가 만든 자주가는 폴더로 만든 alias다. 

alias aios="cd ~/Documents/workspace/araone_ios"
alias dand="cd ~/Documents/workspace/dalvocaandroid1"

%~ 는 현재 폴더명을 보여주는데 폴더명의 시작부분이 $HOME과 동일하면 그부분은 ~로 대체하여 보여준다.

 

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~%{$reset_color%}\n$(git_prompt_info)> '

 

%~를 %d나 %/로 바꾸면 아래처럼 풀경로를 보여준다.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %d%{$reset_color%}\n$(git_prompt_info)> '

 

만약 폴더명을 현재 폴더명(= 마지막 폴더명)만 보고 싶으면 %c를 입력한다.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %c%{$reset_color%}\n$(git_prompt_info)> '

%c는 %1~와 동일하다. 마지막 폴더명 2개만 보고 싶으면 숫자를 바꾸어주면 된다.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %2~%{$reset_color%}\n$(git_prompt_info)> '


날짜나 시간을 표시하고 싶으면 원하는 위치에 아래표현을 사용해보자. (더 자세한 내용은 공식매뉴얼을 참고)

%D : yy-mm-dd 포맷

%T : 현재 시간 24시간 포맷

%t : 현재 시간 12시간 포맷 AM, PM 문구 포함.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~ (현재시간 : %D %t) %{$reset_color%}\n$(git_prompt_info)> '


글자의 색상을 바꾸고 싶으면 아래를 수정한다.

가능한 색상은, black, white, red, green, blue등이 있다.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~%{$reset_color%}\n$(git_prompt_info)> '

 

백그라운드 색상을 추가하고 싶으면 아래문구를 추가하자. 색상은 원하는걸로.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}%{$bg[red]%}Location: %~%{$reset_color%}\n$(git_prompt_info)> '


Location글자를 바꿀려면 원하는 문자를 넣으면 된다.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~%{$reset_color%}\n$(git_prompt_info)> '

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}현위치:%~%{$reset_color%}\n$(git_prompt_info)> '


두줄중 밑줄은 기본적으로 "> "를 보여주고 git 폴더일때는 "git:(브랜치명)> "를 보여준다.

이는 아랫부분에 정의되어 있다.

PROMPT=$'\n${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[green]%}Location: %~%{$reset_color%}\n$(git_prompt_info)> '

"> "를 다른것으로 바꾸고 싶으면 바꾸고 싶은 문자를 넣는다. "(명령어): "로 바꾼 화면이다.

\n$(git_prompt_info)(명령어): '

근데 $(git_prompt_info)는 어디에 정의되어 있지?