8 가지 유용하고 흥미로운 Bash 프롬프트

노트북 앞에 있는 코더.

많은 사람들이 명령 줄 프롬프트를 유용한 요소로 생각하지 않거나 별로 신경을 쓰지 않습니다. 하지만 유용한 프롬프트는 명령 줄을 사용하는 방식을 변화시킬 수 있으며, 나아가 시스템 전체에도 영향을 미칠 수 있습니다. 이 글에서는 여러 유용하고 흥미로운 Bash 프롬프트를 예시와 함께 보여줍니다. 우리는 프롬프트 자체부터 시작하여, 그 사용 방법에 대한 추가 지침도 제공합니다.

여기에서 몇 가지 Bash 프롬프트를 제시하며, 모든 것이 진지할 필요는 없습니다. 예를 들어, 목록의 첫 번째 항목은 명령 줄을 사용할 때 약간의 즐거움을 줄 수 있습니다!

또한 읽어보세요: 리눅스 초보자를 위한 기본 Bash 명령어

1. 성공적인 실행 시 “카오모지” 표시

이 프롬프트는 유쾌하면서도 유용합니다! 아이디어는 성공적인 명령을 실행했는지 여부에 따라 행복한 카오모지를 보여주는 것입니다.

Bash 프롬프트에서 카오모지 표시.

반대로, 명령이 실패하면 슬픈 카오모지가 나타납니다.

이를 적용하려면 아래 코드를 사용하세요:

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

위 코드는 혼란스러워 보일 수 있지만, 우리는 if 문을 사용하여 명령이 좋거나 나쁜지를 결정합니다. 그 다음, 카오모지를 올바르게 표시하기 위해 이스케이핑을 사용합니다.

또한 읽어보세요: Gnus와 함께 Emacs를 USENET 리더로 사용하는 방법

2. 터미널이 잘못된 명령을 입력했을 때 Bash 프롬프트 색상 변경

프롬프트 색상 변경.

논란의 여지가 있겠지만, 이 프롬프트는 목록에서 가장 유용하다 할 수 있습니다. 위와 마찬가지로, 마지막 명령이 실패하면 프롬프트가 색상을 변경하며, 긴 경로를 줄이고 각 명령의 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 문과 색상 코드를 사용하여 다양한 메시지를 강조합니다.

이 색상은 원하는 대로 설정할 수 있지만, 변경된 색상이 오히려 도움이 되는 논리를 고려하는 것이 좋습니다.

또한 읽어보세요: Leafnode를 오프라인 USENET 서버로 설정하는 방법

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

여러 줄 Bash 프롬프트 사용.

때때로 Bash 프롬프트에 많은 정보를 포함하고 싶을 수 있습니다. 만약 당신이 그런 사람이라면, 이 Bash 프롬프트가 흥미로울 수 있습니다. 날짜, 시간, 전체 디렉토리 경로, 사용자 및 호스트 이름, 활성 터미널, 파일 수 및 공간 사용량까지 보여줍니다.

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 프롬프트의 가독성 높이기

이 프롬프트는 정보를 구분하기 위한 색상 사용 외에는 특별한 것이 없습니다. 보시다시피, 시간, 사용자 및 호스트 이름, 현재 디렉토리를 제공합니다.

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

이것은 가장 유용한 Bash 프롬프트 중 하나이며, 사용자 맞춤형 프롬프트를 설정하는 데 첫 번째로 고려해야 할 분야입니다. 사용자 맞춤형 프롬프트가 어떻게 작동하는지 배우는 데 좋은 기초를 제공합니다.

5. 전체 디렉토리 경로 표시

색상을 사용하는 것과 비슷하게, 이 프롬프트는 깔끔하고 최소한의 두 줄 프롬프트입니다 (맨 위에 빈 줄이 있습니다).

프롬프트에서 전체 디렉토리 경로 표시.

첫 번째 줄에는 전체 작업 디렉토리 경로가 표시되고, 아래에는 사용자가 표시됩니다.

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

프롬프트 내에서 빈 줄을 사용하고 싶지 않다면 첫 번째 \n을 제거하면 됩니다. 그러나 레이아웃과 형식을 조정해 보세요. 각 터미널 경험은 컴퓨터와 명령 줄 설정에 따라 다르기 때문입니다.

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

이 두 줄 프롬프트는 아직 사용하지 않은 정보를 표시합니다. 우리는 실행 중인 백그라운드 작업의 총계를 제공합니다. 이는 멀티태스킹을 하지만 활동을 주시해야 하는 경우 유용합니다.

백그라운드 작업 수 표시.

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

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. 작업 디렉토리 정보 표시

작업 디렉토리 정보 표시.

이 프롬프트에서는 사용자 및 호스트 이름, 작업 수, 날짜 및 시간을 첫 번째 줄에 표시합니다. 그 아래에는 현재 디렉토리와 해당 디렉토리의 파일 수 및 디스크 사용량 정보가 표시됩니다.

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 프롬프트.

위의 모든 것을 결합하여 나만의 사용자 정의 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 변수를 살펴봐야 하며, 이것이 다양한 요소를 “잠금 해제”하는 방법입니다.

변경할 수 있는 내용을 이해하는 데 유용한 자료는 Linux.com 웹사이트에 있으며, 사용자 맞춤형 세션 동안 그 문서를 참고하는 것이 좋습니다.

5. 더 이상 터미널에서 사용자 정의 Bash 프롬프트를 사용하고 싶지 않으면 어떻게 하나요?

간단한 대답은 구성 파일을 열고 관련 줄을 삭제하면 됩니다. 추가적인 명령어를 실행할 필요는 없지만, 기대하는 변경 사항이 보이지 않을 경우 터미널을 재시작하는 것이 좋습니다.

정기적으로 명령 줄을 사용하는 경우, 또는 터미널 앱을 시작할 때 특정한 필요가 있는 경우 프롬프트를 사용자 맞춤형으로 만드는 것이 좋습니다. 많은 지식이 필요하지 않으며, 대부분의 경우 다른 개발자로부터 필요한 프롬프트를 찾을 수 있습니다.