Unix, Linux 관련/Shell 설정, 명령어

[CSH] Prompt customize 하기

호드맨 2020. 12. 14. 01:52

많은 사람들이 Window 환경에 익숙하지만, Unix/Linux를 사용하는 모든 직장인 및 학생들이 가장 많이 접하는 것은 다름 아닌 prompt 일 것이다. Window에서 디렉터리를 이동하듯이 cd 명령어를 쓰고, 파일(txt)을 열고 읽듯이 vi(vim)을 사용하고 있을 것이다. 아쉬운 것은 대부분 사용자들이 기본적으로 설치된, 혹은 누군가가 설정해 놓은 환경을 그대로 가져다 쓰게 된다. 물론 그 누군가가 설정한 환경이 모두의 입맛에 맞는 편리한 설정이라면 좋겠지만, 그렇지 않은 경우가 많다. 복잡하지도 않으니 이참에 한번 배워보자.

 

http://www.understudy.net/custom.html#C_shell

 

How to make custom prompts

How to change your shell prompt. In my last article I discussed how to change your shell. Now let's change your prompt to make it helpful. Here are what some of my prompts look like: brendhan@TheBaron>$ <--My Bourne shell James@TheBaron:/home/James> <-- My

www.understudy.net

위 사이트를 보면 친절하게도 여러 shell들에 대한 설정 부분이 나와있다. 제가 주로 c-shell을 사용하고 있으므로 c-shell부분만 다루겠다. 다른 shell도 크게 다르진 않다.

 

The C Shell:

You will want to edit your .cshrc file. You will want to add after the line that says "# An interactive shell -- set some stuff up":

# Custom Prompt settings
# whoami @ hostname current working directory ->

set prompt="`whoami`@`hostname -s` $cwd ->" 

 

간단히 홈 디렉토리의 .cshrc 파일에 set prompt 구문을 넣으면 된다. 물론 저거 그대로 넣으면 재미도 없고 멋도 없다. 해당 사이트에서 조금 더 내려보면 여러 테이블들이 보인다. 기본적인 설정은 위의 한 줄로 되지만, 이 테이블들을 가지고 customizing 할 수 있다.

Current working directory $CWD $PWD \w %/ %/
Current working directory, with one's home directory by `~' $CWD:t $PWD##*/ \W %~ %~
Full hostname 'uname -n' 'uname -n' N/A %M %M
Hostname up to the first '.' `hostname -s` `hostname -s` \h %m %m
Start (stop) boldfacing mode %B (or %b) N/A N/A %B (or %b) %B (or %b)
Start (stop) standout mode %S (or %s) N/A N/A %S (or %s) %S (or %s)
Start (stop) underline mode %U (or %u) N/A N/A %U (or %u) %U (or %u)
User name `whoami` `logname` \u %n %n
The shell's tty that the user is logged in on %l N/A N/A %| %|
The current history number %h N/A \! %h (or %!) %h (or %!)
Name of the shell N/A N/A \s N/A N/A
Time of day in 12-hour hh:mm AM/PM %t N/A \@ %t (or %@) %t (or %@)
Time of day in 24-hour hh:mm %T N/A \A %T %T
Time of day in 12-hour with seconds hh:mm:ss AM/PM %p N/A \T %p N/A
Time of day in 24-hour with seconds hh:mm:nn %P N/A \t %P %*
The day in 'dd' format %D N/A N/A %D N/A
The month in 'Mon' format %w N/A N/A %w N/A
The month in 'mm' format %W N/A N/A %W N/A
The year in 'yy' format %y N/A N/A %y N/A
The year in 'yyyy' format %Y N/A N/A %Y N/A
The date in "Weekday Month Date" format N/A N/A \d N/A N/A
The date in day-dd format N/A N/A N/A N/A %w
The date in Mon/dd/yy format N/A N/A N/A N/A %W
The date in yy-mm-dd format N/A N/A N/A N/A %D
The weekday in 'Day' format %d N/A N/A %d N/A

Description 부분을 잘 보면 각종 변수들을 부르는 것인걸 알 수 있다. 위의 설정 예제(?)에서 사용한 whoami 라던지, hostname, CWD 도 테이블에 나와 있다. 이걸로 본인이 원하는 형태의 prompt를 만들 수 있다. 현재 제가 사용하고 있는 prompt의 경우 아래와 같다.

# 실제 프롬프트 -> [ 15:17 hodman@hodman-l: /user/hodman ]
# 설명 -> [ 현재시간 사용자@계정 현재디렉토리 ]

set prompt = "[ %T $user@$hostname: $cwd ]"

 

개인적인 설정이므로 왜 이렇게 했냐고는 묻지 마시길.. 바라지만 현재 디렉터리 부분의 앞 뒤를 한 칸 띄워놓으면 디렉터리 복사하기 붙여 넣기 할 때 선택하기 쉬워진다. 이렇게 설정하고 나서도 아쉬운 점이 있으니 눈에 잘 띄지 않는다는 점? 계속해서 해당 사이트의 밑으로 밑으로 가다 보면 알록달록한 내용들이 나온다. 우리는 Full HD 시대에 살고 있으니 prompt 에도 아쉬운 대로 색을 집어넣자.

테이블이 여러 개고 사실 다 알 필요는 없는 것들이며 링크된 사이트에 다 나와 있으므로 여기에 적진 않았다. 하지만 중요한 건 색을 넣으면서 사용할 터미널의 배경이다. 흰색 배경은 눈 아프다. 개인적으로는 검정 배경에 흰 글씨를 선호하며 왠지 예전 Text MUD 플레이를 할 때의 console 창과 유사한 느낌이 들어 향수에 젖어들 수 있다. (농담 반 진담 반) 결국 최종적인 프롬프트 설정은 아래와 같다.

# 실제 프롬프트 -> [ 15:24 hodman@hodman-l: /user/hodman ]  
# 설명 -> 별거 없는데 코드만 길다. shell 마다 안시코드 사용구문은 조금 다를 수 있다.

set prompt = "\n[ %{\033[0;31m%}%T %{\033[1;32m%}$user%{\033[0m%}@%{\033[1;34m%}$hostname%{\033[0m%s}: $cwd ] "

 

이렇게 해 놓으면 뭔가 되는 것 같은 느낌이 막 든다. (나만의 착각) 마지막으로 중요한 것은 prompt를 이렇게 해 놓아도 cd 명령어에 alias 로 set prompt를 다시 등록하지 않으면, cd로 옮겨가도 원래 디렉터리만 나타낼 수 있다. 다음에 cd 관련 설정도 글을 한 번 적어 보겠다.