bash 프롬프트가 무엇을 의미하는지 혼란스러워요

bash 프롬프트가 무엇을 의미하는지 혼란스러워요

$PS1Bash에서 이 변수를 수정하여 프롬프트를 변경할 수 있다는 것을 알았습니다 . 문제는 제가 받은 코드의 긴 목록을 이해하는 데 약간의 어려움이 있다는 것입니다.

나는 그랬다:

echo "$PS1"

알겠어요: \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$. 터미널은 다음과 같이 표시됩니다 user@hostname:~$.

누군가 이것이 무엇을 의미하는지 알아내도록 도와줄 수 있다면 매우 감사할 것입니다.

고마워요, 어비스 :-)

답변1

이 코드의 의미는 bash 매뉴얼( man bash) 의 PROMPTING 섹션에서 찾을 수 있습니다.

PROMPTING
       When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the
       secondary  prompt PS2 when it needs more input to complete a command.  Bash displays PS0 after it reads a com‐
       mand but before executing it.  Bash displays PS4 as described above before tracing each command  when  the  -x
       option  is  enabled.  Bash allows these prompt strings to be customized by inserting a number of backslash-es‐
       caped special characters that are decoded as follows:
              \a     an ASCII bell character (07)
              \d     the date in "Weekday Month Date" format (e.g., "Tue May 26")
              \D{format}
                     the format is passed to strftime(3) and the result is inserted into the prompt string; an  empty
                     format results in a locale-specific time representation.  The braces are required
              \e     an ASCII escape character (033)
              \h     the hostname up to the first `.'
              \H     the hostname
              \j     the number of jobs currently managed by the shell
              \l     the basename of the shell's terminal device name
              \n     newline
              \r     carriage return
              \s     the name of the shell, the basename of $0 (the portion following the final slash)
              \t     the current time in 24-hour HH:MM:SS format
              \T     the current time in 12-hour HH:MM:SS format
              \@     the current time in 12-hour am/pm format
              \A     the current time in 24-hour HH:MM format
              \u     the username of the current user
              \v     the version of bash (e.g., 2.00)
              \V     the release of bash, version + patch level (e.g., 2.00.0)
              \w     the  current  working  directory,  with  $HOME  abbreviated  with a tilde (uses the value of the
                     PROMPT_DIRTRIM variable)
              \W     the basename of the current working directory, with $HOME abbreviated with a tilde
              \!     the history number of this command
              \#     the command number of this command
              \$     if the effective UID is 0, a #, otherwise a $
              \nnn   the character corresponding to the octal number nnn
              \\     a backslash
              \[     begin a sequence of non-printing characters, which could be used to embed a terminal control se‐
                     quence into the prompt
              \]     end a sequence of non-printing characters

       The  command number and the history number are usually different: the history number of a command is its posi‐
       tion in the history list, which may include commands restored from the history file (see HISTORY below), while
       the command number is the position in the sequence of commands executed during the current shell session.  Af‐
       ter the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion,
       and  quote removal, subject to the value of the promptvars shell option (see the description of the shopt com‐
       mand under SHELL BUILTIN COMMANDS below).

답변2

전체 문자열을 문자별로, 제어 코드별로 제어 코드를 거쳐야 합니다. 두 개의 매뉴얼 페이지가 도움이 될 것입니다: man bash, 및 man console_codes. 예를 들면 다음을 참조하세요 man bash.

PROMPTING
.
.
.
   \e     an ASCII escape character (033)
.
.
.
   \[     begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
      

등 또는 예를 들어 전경색을 굵은 녹색으로 설정하는 man console_codes"ECMA-48 그래픽 변환 설정" 코드입니다 .ESC [01;32m

기본적으로 위의 문자열은 PS1아이콘 이름과 창 제목을 호스트의 사용자(작업 디렉터리)로 설정한 다음 호스트의 사용자에게 굵은 녹색으로 메시지를 표시하고 작업 디렉터리를 굵은 파란색으로 표시한 다음 기호를 표시합니다 $.

관련 정보