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

文字列全体を文字ごと、制御コードごとに制御コードを使用する必要があります。 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アイコン名とウィンドウのタイトルをホストのユーザー(作業ディレクトリ)に設定し、ホストのユーザーに太い緑色でメッセージを表示し、作業ディレクトリを太い青色でマークしてから記号を表示します$

関連情報