Computer >> 컴퓨터 >  >> 시스템 >> Linux

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

많은 사람들이 명령줄 프롬프트를 단순한 장식 요소 정도로 여기거나 아예 신경 쓰지 않습니다. 하지만 잘 설계된 프롬프트 하나만으로도 명령줄 사용 방식, 나아가 시스템을 다루는 전반적인 경험이 달라질 수 있습니다. 이 글에서는 실제 예제와 함께 유용하고 흥미로운 Bash 프롬프트 여러 가지를 소개합니다. 먼저 프롬프트 자체를 살펴본 뒤, 이를 직접 적용하고 활용하는 방법까지 안내해 드리겠습니다.

여기서 소개하는 프롬프트 중 일부는 진지한 용도보다는 재미 요소가 강합니다. 예를 들어 목록의 첫 번째 항목은 명령줄 작업에 약간의 즐거움을 더해 줄 것입니다.

1. 명령 실행 성공 시 "카오모지(kaomoji)" 표시하기

이 프롬프트는 재미와 실용성을 동시에 갖춘 사례입니다. 명령이 성공적으로 실행되는 한 프롬프트에는 행복한 표정의 카오모지가 나타납니다.

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

반대로 명령이 실패하면 슬픈 표정의 카오모지가 표시됩니다.

적용하려면 다음 코드를 사용하세요.

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\u@\h:\w]\$ "

언뜻 복잡해 보일 수 있지만, 원리는 간단합니다. if 문으로 마지막 명령의 성공 여부를 판단하고, 그 결과에 따라 카오모지가 올바르게 출력되도록 이스케이프 처리를 해 둔 것입니다.

2. 잘못된 명령 입력 시 Bash 프롬프트 색상 변경하기

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

이 프롬프트는 목록 중에서 가장 실용적이라고 할 수 있습니다. 위의 예제처럼 마지막 명령이 실패하면 프롬프트 색상이 바뀌며, 그뿐 아니라 긴 경로를 축약해 주고 각 명령의 Bash 히스토리 번호도 함께 표시해 나중에 쉽게 불러올 수 있습니다.

PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'

역시 구현 난이도가 높아 보이지만 구조는 단순합니다. if 문과 색상 코드를 조합해 다양한 상태 메시지를 강조하는 방식입니다.

색상은 원하는 대로 자유롭게 지정할 수 있습니다. 다만 무작정 눈에 띄는 색보다는, 변경된 색상이 오히려 작업에 도움이 되도록 논리적으로 선택하는 것이 좋습니다.

3. Bash 프롬프트를 여러 줄로 확장하기

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

프롬프트에 많은 정보를 담고 싶다면 이 멀티라인 프롬프트가 제격입니다. 날짜와 시간, 전체 디렉터리 경로, 사용자 및 호스트 이름, 현재 사용 중인 터미널은 물론 파일 개수와 디스크 사용량까지 한눈에 보여 줍니다.

PS1="\n\[\033[35m\]$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"

여기서는 if 문이 필요하지 않습니다. 프롬프트 레이아웃은 고정되어 있지만 그 안에 들어가는 내용은 동적으로 갱신되기 때문입니다. 코드가 길어 각 요소를 해석하기 어려울 수 있는데, 일단 적용해 본 뒤 프롬프트를 한 조각씩 뜯어보며 분석해 보시기 바랍니다. 조금만 교차 확인하면 프롬프트가 어떻게 조합되는지 감이 잡힐 것입니다.

4. 색상으로 Bash 프롬프트 가독성 높이기

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

이 프롬프트는 화려함보다는 색상을 활용해 정보 영역을 깔끔하게 구분한다는 점이 특징입니다. 시간, 사용자 및 호스트 이름, 현재 디렉터리를 직관적으로 보여 줍니다.

PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]$ "

가장 실용적인 Bash 프롬프트 중 하나로, 커스텀 프롬프트를 처음 만들어 볼 때 출발점으로 삼기 좋습니다. 커스텀 프롬프트가 어떻게 동작하는지 배우는 좋은 기초가 되어 줄 것입니다.

5. 전체 디렉터리 경로 표시하기

색상 활용법과 마찬가지로 미니멀한 지향점을 가진, 두 줄 구조의 깔끔한 프롬프트입니다(맨 위에 빈 줄이 하나 포함되어 있습니다).

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

첫 번째 줄에는 전체 작업 디렉터리 경로를, 두 번째 줄에는 사용자 정보를 표시합니다.

PS1="[\[\033[32m\]\w]\[\033[0m\]\n\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"

프롬프트에 빈 줄을 넣고 싶지 않다면 첫 번째 \n을 삭제하면 됩니다. 다만 레이아웃과 서식은 직접 조정해 보세요. 컴퓨터 환경과 명령줄 설정에 따라 터미널에서 보이는 모습이 달라질 수 있습니다.

6. 백그라운드 작업 수 표시하기

이 두 줄짜리 프롬프트는 지금까지 소개하지 않은 새로운 정보를 담고 있습니다. 바로 백그라운드에서 실행 중인 작업(job) 수를 실시간으로 집계해 보여 주는 기능입니다. 여러 작업을 동시에 진행하면서도 상태를 놓치고 싶지 않은 멀티태스커에게 특히 유용합니다.

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

첫 번째 줄에는 사용자와 호스트 이름, 작업 디렉터리 경로가 표시됩니다. 두 번째 줄에는 히스토리 번호와 백그라운드에서 실행 중인 작업 수가 나타납니다.

PS1='\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '

구조 자체는 단순하지만, 시스템 활동 상태를 파악하는 데 꼭 필요한 정보를 제공합니다. 여기에 if 문과 색상 코드를 추가해 특정 수준 이상으로 작업이 쌓이면 알림처럼 강조되도록 발전시킬 수도 있습니다.

7. 작업 디렉터리 정보 표시하기

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

이 프롬프트는 첫 번째 줄에 사용자와 호스트 이름, 작업 수, 날짜와 시간을 표시합니다. 두 번째 줄에는 현재 디렉터리와 함께 해당 디렉터리의 파일 개수, 디스크 사용량 정보가 나타납니다.

PS1="\n\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]\n\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, $(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"

이런 프롬프트들의 공통적인 어려움은 서식과 이스케이프 처리 부분이 어떻게 동작하는지 파악하는 일입니다. 멀티라인 프롬프트와 마찬가지로, 전체 구조를 이해할 때까지 한 조각씩 차근차근 분석해 보는 것이 좋습니다.

코드를 한 번에 붙여넣지 말고 일부분씩 입력하면서 정상적으로 표시되는지, 오류가 없는지 확인한 뒤 전체 스니펫을 완성해 가는 방식도 추천합니다.

8. 나만의 Bash 프롬프트 만들기

명령줄 활용도를 높이는 유용하고 재미있는 Bash 프롬프트 8가지

지금까지 소개한 요소들을 자유롭게 조합하면 자신만의 커스텀 Bash 프롬프트를 만들 수 있습니다. 예를 들어 아래 프롬프트는 7번 항목을 변형한 것으로, 공간을 덜 차지하면서도 꼭 필요한 정보만 담도록 다듬었습니다.

두 줄 스타일은 언제나 컴팩트합니다. 명령 입력 공간을 줄이지 않으면서도 전체 경로를 확인할 수 있기 때문입니다.

PS1="\n\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])\n(\[\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"

이쯤 되면 이 프롬프트가 어떤 역할을 하는지 충분히 이해하고 계실 겁니다. 다만 이 코드를 그대로 붙여넣기보다는 직접 만들어 보기를 권합니다. 각 요소가 어떻게 상호작용하는지 익히게 되고, 어쩌면 완전히 새로운 나만의 Bash 프롬프트를 탄생시킬 수도 있습니다.

자주 묻는 질문

1. 굳이 다양한 Bash 프롬프트를 사용해야 할까요?

이유는 여러 가지지만, 핵심은 생산성입니다. 명령줄을 자주 사용한다면 몇 초마다 프롬프트를 마주하게 됩니다. 따라서 가장 중요한 정보를 프롬프트에 넣어 두면 언제나 손쉽게 확인할 수 있습니다.

많은 경우, 여러 창을 띄워 두는 것보다 커스텀 Bash 프롬프트를 활용하는 편이 훨씬 효율적입니다.

2. 이러한 Bash 프롬프트를 터미널에 어떻게 적용하나요?

원하는 프롬프트 코드를 복사해서 터미널 앱에 붙여넣기만 하면 됩니다. 다만 이 방식은 현재 세션에만 적용되므로, 이론상 터미널을 실행할 때마다 반복해야 합니다.

변경 사항을 영구적으로 유지하려면 해당 스니펫을 ~/.bashrc 파일 맨 끝에 붙여넣은 뒤 터미널을 다시 시작하세요.

3. 다른 셸에서도 이 Bash 프롬프트가 동작하나요?

대부분의 경우 다른 종류의 셸과도 상당 부분 호환됩니다. 다만 변경 사항이 100% 동일하게 적용된다는 보장은 없습니다.

예를 들어 Mac 터미널 커스터마이징 관련 글에서 다루는 zsh의 경우, 세부적인 차이는 있지만 공통점이 훨씬 많다는 것을 확인할 수 있습니다.

4. Bash 프롬프트에 어떤 정보와 요소를 추가할 수 있는지 어떻게 알 수 있나요?

사실상 시스템의 거의 모든 요소를 Bash 프롬프트에 표시할 수 있습니다. 이를 위해서는 Bash 변수를 학습해야 하는데, Bash 변수가 바로 다양한 정보를 "해제"하는 열쇠이기 때문입니다.

무엇을 변경할 수 있는지 이해하는 데 좋은 자료로 Linux.com 웹사이트의 문서가 있으며, 커스터마이징 작업 내내 참고 자료로 곁에 두는 것을 추천합니다.

5. 더 이상 커스텀 Bash 프롬프트를 사용하고 싶지 않다면 어떻게 하나요?

간단합니다. 설정 파일을 열어 해당 줄을 삭제하면 됩니다. 추가로 실행해야 할 명령은 없으며, 기대한 대로 변경되지 않는다면 터미널을 재시작해 보는 것이 좋습니다.

명령줄을 자주 사용하거나 터미널 앱을 실행할 때 특별한 요구 사항이 있다면, 프롬프트 커스터마이징은 훌륭한 선택입니다. 깊은 지식이 필요하지 않고, 대부분의 경우 다른 개발자가 만들어 둔 프롬프트를 가져다 활용할 수도 있습니다.