수색…


통사론

  • export PS1 = "something"# bash가 타이핑 할 명령을 기다릴 때 표시합니다.
  • export PS2 = "anotherthing"# 문장이 더 많은 줄로 확장 될 때 표시
  • export PS3 = "select 문에 대한 질문 프롬프트"# select for seldomly prompt를 사용합니다. 먼저 PS3를 원하는대로 설정 한 다음 선택을 선택하십시오 . 선택 도움말 보기
  • export PS4 = "주로 디버깅에 유용하고 라인 번호 등등"# 배쉬 스크립트 디버깅에 사용됩니다.

매개 변수

탈출 세부
\에이 벨 문자.
\디 "Weekday Month Date"형식의 날짜 (예 : "Tue May 26").
\ D {FORMAT} FORMAT은`strftime '(3)에 전달되고 그 결과는 프롬프트 문자열에 삽입됩니다; 비어있는 FORMAT 결과는 로케일 특정 시간 표현이됩니다. 중괄호가 필요합니다.
\이자형 이스케이프 문자. \ 033도 물론 작동합니다.
\ h 호스트 명, 최초의`. '까지. (즉, 도메인 부분 없음)
\ H 도메인 부분이있는 호스트 이름
\ j 현재 쉘에 의해 관리되는 작업의 수.
\엘 쉘의 터미널 장치 이름의 기본 이름.
\엔 개행.
\아르 자형 캐리지 리턴.
\에스 쉘의 이름,`$ 0 '의 기본 이름 (최종 슬래시 뒤에 나오는 부분).
\티 시간 (24 시간 HH : MM : SS 형식).
\티 시간 (12 시간 HH : MM : SS 형식).
@ 12 시간 am / pm 형식의 시간입니다.
\에이 시간 (24 시간 HH : MM 형식).
\유 현재 사용자의 사용자 이름입니다.
\V Bash 버전 (예 : 2.00)
\V Bash, version + patchlevel (예 : 2.00.0)
\ w $ HOME이 물결표로 축약 된 현재 작업 디렉토리 ($ PROMPT_DIRTRIM 변수 사용).
\ W $ PWD의 기본 이름. $ HOME은 물결표로 축약됩니다.
! 이 명령의 히스토리 번호.
# 이 명령의 명령 번호.
$ 유 효한 uid가 0이면 # , 그렇지 않으면 $ .
\ NNN ASCII 코드가 8 진수 NNN 인 문자.
\ 백 슬래시.
\ [ 일련의 인쇄 할 수없는 문자를 시작하십시오. 이 명령을 사용하여 터미널 제어 시퀀스를 프롬프트에 포함시킬 수 있습니다.
\] 인쇄 할 수없는 문자 시퀀스를 종료하십시오.

PROMPT_COMMAND envrionment 변수 사용

대화 형 bash 인스턴스의 마지막 명령이 완료되면 평가 된 PS1 변수가 표시됩니다. 실제로 PS1을 표시하기 전에 bash는 PROMPT_COMMAND가 설정되어 있는지 확인합니다. 이 var의 값은 호출 할 수있는 프로그램이나 스크립트 여야합니다. 이 변수가 설정되면 PS1 프롬프트가 표시되기 전에이 프로그램 / 스크립트가 호출됩니다.

# just a stupid function, we will use to demonstrate
# we check the date if Hour is 12 and Minute is lower than 59
lunchbreak(){ 
   if (( $(date +%H) == 12 && $(date +%M) < 59 )); then 
      # and print colored \033[ starts the escape sequence 
      # 5; is blinking attribute
      # 2; means bold
      # 31 says red
      printf "\033[5;1;31mmind the lunch break\033[0m\n";
   else
      printf "\033[33mstill working...\033[0m\n"; 
   fi; 
}

# activating it
export PROMPT_COMMAND=lunchbreak

PS2 사용

명령이 둘 이상의 행으로 확장되고 bash가 더 많은 키 스트로크를 기다릴 때 PS2가 표시됩니다. while ... do..done 과 같은 복합 명령을 입력하면 모두 표시됩니다.

export PS2="would you please complete this command?\n" 
# now enter a command extending to at least two lines to see PS2

PS3 사용

select 문을 실행하면 숫자 앞에 접두사가있는 항목이 표시된 다음 PS3 프롬프트가 표시됩니다.

export PS3="  To choose your language type the preceding number : "
select lang in EN CA FR DE; do
   # check input here until valid.
   break
done

PS4 사용

PS4는 bash가 디버깅 모드에있을 때 표시됩니다.

#!/usr/bin/env bash

# switch on debugging
set -x

# define a stupid_func
stupid_func(){
   echo I am line 1 of stupid_func
   echo I am line 2 of stupid_func
}

# setting the PS4 "DEBUG" prompt
export PS4='\nDEBUG level:$SHLVL subshell-level: $BASH_SUBSHELL \nsource-file:${BASH_SOURCE} line#:${LINENO} function:${FUNCNAME[0]:+${FUNCNAME[0]}(): }\nstatement: '

# a normal statement
echo something

# function call
stupid_func

# a pipeline of commands running in a subshell 
( ls -l | grep 'x' )

PS1 사용

PS1은 bash가 명령 입력을 대기하는 것을 나타내는 일반적인 시스템 프롬프트입니다. 일부 에스 케이프 순서를 이해하고 함수 또는 프로그램을 실행할 수 있습니다. bash는 displayes 프롬프트 뒤에 커서를 위치시켜야하므로 프롬프트 문자열의 유효 길이를 계산하는 방법을 알아야합니다. PS1 변수 내에서 문자의 인쇄되지 않은 순서를 나타내려면 이스케이프 처리 된 중괄호가 사용됩니다. \ [ 문자가 아닌 \ 인쇄 순서 \] . 모든 말은 모든 PS * vars에 적용됩니다.

(검은 색 캐럿은 커서를 나타냄)

#everything not being an escape sequence will be literally printed
export PS1="literal sequence "  # Prompt is now:
literal sequence ▉

# \u == user \h == host \w == actual working directory
# mind the single quotes avoiding interpretation by shell
export PS1='\u@\h:\w > ' # \u == user, \h == host, \w actual working dir
looser@host:/some/path > ▉

# executing some commands within PS1
# following line will set foreground color to red, if user==root, 
# else it resets attributes to default
# $( (($EUID == 0)) &&  tput setaf 1)
# later we do reset attributes to default with
# $(  tput sgr0 )
# assuming being root:
PS1="\[$( (($EUID == 0)) &&  tput setaf 1 \]\u\[$(tput sgr0)\]@\w:\w \$ "
looser@host:/some/path > ▉  # if not root else <red>root<default>@host....    


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow