Linux 에서 셸 프롬프트 맞 춤 형

7158 단어 OperationSystem
Linux 에서 셸 프롬프트 맞 춤 형
만약 에 셸 알림 줄 을 색채 가 현란 하고 더 많은 정 보 를 가지 게 하기 쉽다 면 왜 단조 로 운 표준 셸 알림 줄 을 사용 해 야 합 니까?이 기법 에서 Daniel Robbins 는 원 하 는 셸 알림 줄 을 얻 는 방법 을 설명 하고 X 터미널 의 제목 표시 줄 을 동적 으로 업데이트 하 는 방법 을 설명 합 니 다.
    Linux / UNIX 사람 으로서 우 리 는 셸 에서 오랫동안 일 했 고 많은 상황 에서 다음 줄 은 항상 우 리 를 쳐 다 보 는 제시 줄 입 니 다.
bash-2.04$

    만약 에 슈퍼 유저 (root) 라면 아래 의 아름 다운 '신분' 을 표시 하 는 알림 줄 버 전 을 사용 할 권리 가 있 습 니 다.
bash-2.04#

이 제시 행 들 은 그다지 예 쁘 지 않다.이것 도 어쩐지 몇 가지 리 눅 스 버 전이 기본 알림 줄 을 업 그 레이 드 했 고 그 중에서 색상 과 더 많은 정 보 를 추가 했다.그러나, 설령 당신 이 마침 좋 은 컬러 제시 줄 을 가지 고 있 는 새로운 버 전이 있다 하 더 라 도, 그것 은 완벽 할 수 없습니다.알림 줄 에 몇 가지 색상 을 추가 하거나 변경 하거나 정 보 를 추가 하거나 삭제 하 기 를 원할 수도 있 습 니 다.처음부터 자신 만 의 컬러 를 디자인 하고 장식 을 거 친 힌트 줄 을 디자인 하 는 것 은 어렵 지 않 습 니 다.
제시 행 기초
    bash 에서 PS1 환경 변수의 값 을 변경 하여 알림 줄 을 설정 할 수 있 습 니 다. 다음 과 같 습 니 다.
$ export PS1="> "
>

"export" 정 의 를 ~ /. bashrc 파일 에 두 면 변경 사항 을 고정 할 수 있 습 니 다.원한 다 면 PS1 은 임의의 텍스트 를 포함 할 수 있 습 니 다:
$ export PS1="This is my super prompt > "
This is my super prompt >

    이것 은 매우 재 미 있 지만 제시 줄 에 대량의 정적 텍스트 를 포함 하 는 것 은 그다지 유용 하지 않다.대부분의 맞 춤 형 알림 줄 에는 사용자 이름, 작업 디 렉 터 리, 호스트 이름 과 같은 정보 가 포함 되 어 있 습 니 다.이 에피소드 정 보 는 셸 세 계 를 여행 하 는 데 도움 을 줄 수 있 습 니 다.예 를 들 어 다음 알림 줄 은 사용자 이름과 호스트 이름 을 표시 합 니 다.
$ export PS1="\u@\H > "
drobbins@freebox >

이 알림 줄 은 여러 개의 서로 다른 이름 의 계 정 으로 여러 대의 기 계 를 로그 인 하 는 사람들 에 게 특히 유용 합 니 다. 왜냐하면 이것 은 당신 이 현재 어느 기계 에서 조작 하고 있 는 지, 어떤 권한 을 가지 고 있 는 지 알려 줄 수 있 기 때 문 입 니 다.    위의 예제 에서 우 리 는 전용 역 슬 래 쉬 로 의 미 를 바 꾸 는 문자 배열 을 사 용 했 습 니 다. 이 를 통 해 bash 에 게 사용자 이름과 호스트 이름 을 알림 줄 에 삽입 하 라 고 알 립 니 다. 이러한 전의 문자 배열 이 PS1 변수 에 나타 날 때 bash 는 특정한 값 으로 바 꿉 니 다.저 희 는 '\ u' (사용자 이름 표시) 와 '\ H' (호스트 이름 표시 첫 부분) 순 서 를 사 용 했 습 니 다.다음은 bash 가 인식 할 수 있 는 모든 전용 시퀀스 의 전체 목록 입 니 다. (bash man page 의 "PROMPTING" 부분 에서 이 목록 을 찾 을 수 있 습 니 다.)
시퀀스
설명 하 다.
\a
ASCII 벨 문자 (\ 007 입력 가능)
\d
"Wed Sep 06" 형식의 날짜
\e
ASCII 전의 문자 (\ 033 입력 가능)
\h
호스트 이름 의 첫 번 째 부분 (예: "my box")
\H
호스트 의 전체 이름 (예: "my box. my domain. com")
\j
이 셸 에서 ^ Z 를 누 르 면 걸 려 있 는 프로 세 스 수 입 니 다.
\l
이 셸 의 터미널 장치 이름 (예: "ttyp 4")
줄 바 꿈 부호
\r
리 턴 부적
\s
셸 이름 (예: "bash")
\t
24 시간 제 시간 (예 를 들 어 "23: 01: 01")
\T
12 시간 제 시간 (예 를 들 어 "11: 01: 01")
\@
am / pm 가 있 는 12 시간 제 시간
\u
사용자 이름
\v
bash 버 전 (예: 2.04)
\V
Bash 버 전 (패 치 레벨 포함)? /td>
\w
현재 작업 디 렉 터 리 (예: "/ home / drobbins")
\W
현재 작업 디 렉 터 리 의 "기본 이름 (basename)" (예: "drobbins")
\!
현재 명령 이 과거 기록 버퍼 에 있 는 위치
\#
명령 번호 (내용 을 입력 하면 알림 마다 누적)
$
슈퍼 유저 (root) 가 아니라면 "$" 를 삽입 합 니 다.슈퍼 유저 라면 '\ #' 을 표시 합 니 다.
\xxx
세 자리 xxx (사용 하지 않 은 숫자 를 0 으로 대체 합 니 다. 예 를 들 어 "\ 007") 로 표시 하 는 ASCII 문 자 를 삽입 합 니 다.
\\
백 슬 래 쉬
\[
이 시퀀스 는 커서 를 움 직 이지 않 는 문자 시퀀스 (예 를 들 어 색상 전의 시퀀스) 에 나타 나 야 합 니 다. bash 가 자동 으로 줄 을 바 꿀 수 있 도록 합 니 다.
\]
이 시퀀스 는 인쇄 되 지 않 은 문자 시퀀스 뒤에 나타 나 야 합 니 다.
* 8195: 8195: 이렇게 해서 bash 에서 역 슬 래 쉬 로 의 미 를 바 꾸 는 모든 전용 서열 을 알 게 되 었 습 니 다.이 서열 들 을 조금 연습 해서 그들의 작업 방식 에 대해 감성 적 인 인식 을 얻 으 세 요.테스트 를 한 후에 아래 에 색 을 추가 하기 시작 합 니 다.
컬러 화
『 8195 』 색 을 첨가 하 는 것 이 상당히 쉽다.첫 번 째 단 계 는 색상 이 없 는 힌트 줄 을 디자인 하 는 것 입 니 다.그 다음 에 우리 가 해 야 할 일 은 터미널 (bash 가 아 닌) 이 식별 할 수 있 는 전용 전의 서열 을 추가 하여 텍스트 의 일부분 을 컬러 로 표시 하 는 것 입 니 다.표준 Linux 터미널 과 X 터미널 은 전경 (텍스트) 색상 과 배경 색 을 설정 할 수 있 습 니 다. 필요 하 다 면 'bold' 문 자 를 사용 할 수 있 습 니 다.우리 가 선택 할 수 있 는 여덟 가지 색깔 이 있다.* 8195 * 색상 은 PS1 에 전용 시퀀스 를 추가 하여 선택 합 니 다 – 기본적으로 "\ e" (전의 개방 괄호) 와 "m" 사이 에 숫자 값 을 끼 웁 니 다. 하나 이상 의 숫자 코드 를 지정 하면 분점 으로 나 눕 니 다. 다음은 색상 코드 예제 입 니 다.
"\e[0m"

* 8195: 8195: 숫자 코드 를 0 으로 지정 하면 터미널 에 전경, 배경, 굵기 설정 을 기본 값 으로 초기 화 하 는 것 을 알려 줍 니 다. 입력 한 텍스트 를 비 컬러 로 만 들 기 위해 알림 줄 이 끝 날 때 이 코드 를 사용 할 수 있 습 니 다. 이 색상 코드 를 보 여 줍 니 다. 아래 캡 처 결 과 를 주의 하 십시오.
색 표
이 시 계 를 사용 하려 면 먼저 사용 할 색상 을 찾 은 다음 에 해당 하 는 전경 번호 (30 - 37) 와 배경 번호 (40 - 47) 를 찾 으 십시오. 예 를 들 어 검은색 바탕 에 녹색 글 자 를 좋아한다 면 번 호 를 각각 32 와 40 으로 설정 할 수 있 습 니 다. 그리고 알림 줄 정 의 를 열 고 적당 한 색상 코드 를 추가 할 수 있 습 니 다. 아래 의 정의:
export PS1="\w> "

다음으로 변경:
export PS1="\e[32;40m\w> "

    지금까지 알림 줄 은 괜 찮 았 지만 완벽 하지 않 았 습 니 다. bash 에서 작업 디 렉 터 리 를 표시 한 후에 '\ e [0m' 시퀀스 를 사용 하여 색상 을 정상 값 으로 다시 설정 해 야 합 니 다.
export PS1="\e[32;40m\w> \e[0m"

    이 정 의 는 아름 다운 녹색 알림 줄 을 표시 합 니 다. 그러나 우 리 는 마 무 리 를 해 야 합 니 다. 배경 을 검은색 으로 설정 하고 검은색 은 기본 색 이기 때문에 '40' 이라는 배경 색 설정 을 포함 할 필요 가 없습니다. 또한 녹색 은 어 둡 습 니 다. 우 리 는 '1' 을 추가 합 니 다.색상 코드 로 이 문 제 를 수정 합 니 다. 더 밝 은 굵 은 문 자 를 사용 합 니 다. 이 수정 외 에 도 인쇄 되 지 않 은 모든 문 자 를 전용 bash 전의 시퀀스 "[" 와 "]" 로 변환 해 야 합 니 다.괄호 로 묶 습 니 다. 이 두 시퀀스 는 bash 에 게 알려 줍 니 다. 괄호 로 묶 인 문 자 는 줄 의 어떤 공간 도 차지 하지 않 습 니 다. 그러면 자동 으로 줄 을 바 꾸 어 정상 적 인 작업 을 할 수 있 습 니 다. 이 두 개의 전의 시퀀스 가 없습니다. 아주 아름 다운 알림 줄 이 있 지만 입력 한 명령 이 터미널 의 맨 오른쪽 끝 에 도착 하면 혼 란 스 러 워 집 니 다. 다음은 우리 의 최종 알림 줄 입 니 다.:
export PS1="\[\e[32;1m\]\w> \[\e[0m\]"

『 8195 』 같은 제시 줄 에서 몇 가지 색 을 사용 하 는 것 은 걱정 하지 마 세 요. 아래 와 같이:
export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\H> \[\e[0m\]"

Xterm 의 즐거움
    알림 줄 에 정보 와 색상 을 추가 하 는 방법 을 설 명 했 지만 더 나 아 갈 수 있 습 니 다. 알림 줄 에 X 터미널 (예: rxvt 또는 aterm) 의 제목 표시 줄 을 동적 으로 업데이트 할 수 있 도록 전용 코드 를 추가 할 수 있 습 니 다. PS1 알림 줄 에 다음 순 서 를 추가 하 는 것 만 할 수 있 습 니 다.
"\e]2;titlebar\a"

    xterm 제목 표시 줄 에 나타 나 기 를 원 하 는 텍스트 로 하위 문자열 'titlebar' 를 교체 해 야 합 니 다.이제 모든 것 이 준비 되 었 습 니 다. 정적 텍스트 를 사용 할 필요 가 없습니다. bash 전의 서열 을 제목 표시 줄 에 삽입 할 수 있 습 니 다. 사용자 이름, 호스트 이름과 현재 작업 디 렉 터 리 를 제목 표시 줄 에 표시 하고 짧 고 밝 은 녹색 알림 줄 을 정의 합 니 다.
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "

    이것 이 바로 제 가 위 에 있 는 스크린 샷 결과 에 사용 하 는 힌트 줄 입 니 다. 터미널 에 표시 되 는 것 이 아니 라 모든 정 보 를 제목 표시 줄 에 표시 하기 때문에 터미널 에서 한 줄 에 얼마나 많은 문 자 를 표시 할 수 있 는 지 제한 이 있 습 니 다. 참고 로 "[" 와 "]" 로 제목 표시 줄 순 서 를 묶 을 수 있 도록 합 니 다.(터미널 의 경우 이 시퀀스 는 비 인쇄 시퀀스 이기 때 문 입 니 다). 제목 표시 줄 에 많은 정 보 를 넣 는 문 제 는 비 그래 픽 터미널 (예 를 들 어 시스템 콘 솔) 을 사용 하면 이 정 보 를 볼 수 없습니다. 이 문 제 를 해결 하기 위해 서 는. bashrc 에 다음 과 같은 몇 줄 을 추가 할 수 있 습 니 다.
if [ "$TERM" = "linux" ]
then
#we're on the system console or maybe telnetting in
export PS1="\[\e[32;1m\]\u@\H > \[\e[0m\]"
else
#we're not on the console, assume an xterm
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
fi

    이 bash 조건 문 구 는 현재 터미널 에 따라 동적 설정 알림 줄 을 설정 합 니 다. 일치 성 을 얻 기 위해 서 는 ~ /. bash profile 을 설정 하여 시작 할 때 ~ /. bashrc 를 검색 할 수 있 도록 합 니 다. ~ /. bash profile 파일 에 다음 줄 이 있 는 지 확인 하 십시오.
source ~/.bashrc

원본 주소:http://www.cnblogs.com/ask2650/articles/1669637.html

좋은 웹페이지 즐겨찾기