Где я могу найти полную ссылку для переменной $ PS1?

16

Переменная PS1 по умолчанию на моей машине (Kubuntu 13.10) такова:

\[\e]0;\[email protected]\h: \w\a\]${debian_chroot:+($debian_chroot)}\[email protected]\h:\w\$

Я ищу ссылку на то, как работает переменная $ PS1, которая, как минимум, позволяет мне понять вышеперечисленную переменную PS1.

    
задан Mark Raymond 12.01.2014 в 15:04
источник

3 ответа

19

Ссылки

До сих пор не было ни одной ссылки на все, что можно было бы включить в приглашение Bash, но поскольку это функция, которая развивалась в течение десятилетий и, вероятно, варьируется от дистрибутива до дистрибутива, может быть, это слишком много, чтобы спросить. Я попытался обобщить то, что я нашел наиболее полезным здесь.

Это практическое руководство является самым полным, но очень длинным и бессвязным. Некоторые из наиболее полезных разделов:

  • раздел 2.4 и 2.5 объясняют основы настройки PS1, в том числе (печатаемые) escape-символы.
  • Раздел 3.4 объясняет, почему нужны \[ и \] .
  • Раздел 6 объясняет все основные (непечатаемые) escape-последовательности, которые вы, возможно, захотите использовать, в том числе настройка цвета приглашения и заголовок окна xterm.

В этом руководстве объясняется, как ${} работает в Bash вообще, и this Ask Ubuntu объясняет немного больше о том, как это работает с debian_chroot .

Между этими, я думаю, каждый символ в переменной Ubuntu PS1 по умолчанию объясняется.

Объяснение приглашения Ubuntu

В командной строке есть три части:

  • \[\e]0;\[email protected]\h: \w\a\] устанавливает строку заголовка окна xterm:

    • \[ запускает раздел непечатаемых символов
    • \e]0; - это escape-последовательность для "set xterm title" (я считаю, что числа, отличные от 0, будут устанавливать другие свойства xterm, хотя я не тестировал это)
    • \[email protected]\h: \w титула для использования (см. ниже для \u , \h и \w )
    • \a обозначает конец заголовка
    • \] обозначает конец непечатаемых символов
  • ${debian_chroot:+($debian_chroot)} расширяется до значения $ debian_chroot в круглых скобках, если задано $ debian_chroot. См. этот вопрос для получения дополнительной информации о $ debian_chroot.
  • \[email protected]\h:\w\$ - это сама подсказка:

    • \u расширяется до текущего имени пользователя
    • \h расширяется до текущего имени хоста
    • \w расширяется до текущего рабочего каталога
    • \$ увеличивается до # для root и $ для всех других пользователей
ответ дан Mark Raymond 15.01.2014 в 09:43
источник
5

Согласно Справочному руководству Bash , PS1 :

The primary prompt string. The default value is \s-\v\$. See Printing a Prompt, for the complete list of escape sequences that are expanded before PS1 is displayed.

Некоторые другие хорошие ссылки могут быть:

ответ дан Radu Rădeanu 12.01.2014 в 15:16
3

ss64.com , кажется, есть лучшая ссылка, которую я нашел.

В нем объясняются следующие переменные:

\d   The date, in "Weekday Month Date" format (e.g., "Tue May 26"). 

\h   The hostname, up to the first . (e.g. deckard) 
\H   The hostname. (e.g. deckard.SS64.com)

\j   The number of jobs currently managed by the shell. 

\l   The basename of the shell's terminal device name. 

\s   The name of the shell, the basename of $0 (the portion following 
    the final slash). 

\t   The time, in 24-hour HH:MM:SS format. 
\T   The time, in 12-hour HH:MM:SS format. 
\@   The time, in 12-hour am/pm format. 

\u   The username of the current user. 

\v   The version of Bash (e.g., 2.00) 

\V   The release of Bash, version + patchlevel (e.g., 2.00.0) 

\w   The current working directory. 
\W   The basename of $PWD. 

\!   The history number of this command. 
\#   The command number of this command. 

\$   If you are not root, inserts a "$"; if you are root, you get a "#"  (root uid = 0) 

\nnn   The character whose ASCII code is the octal value nnn. 

\n   A newline. 
\r   A carriage return. 
\e   An escape character. 
\a   A bell character.
\   A backslash. 

\[   Begin a sequence of non-printing characters. (like color escape sequences). This
     allows bash to calculate word wrapping correctly.

\]   End a sequence of non-printing characters.

\[ ... \] определяет серию непечатаемых символов. Они должны правильно отслеживать положение курсора.

\e в приглашении запускает escape-последовательность. Подробнее об этих здесь (примечание «Esc» на этой странице представляет собой последовательность \e ).

  • Примечание. Мне никогда не нравились escape-последовательности. Используйте tput , чтобы получить код выхода для вас.

${debian_chroot:+($debian_chroot)} - расширение параметра. См. здесь

  • Он записывает ($debian_chroot) , если $debian_chroot установлено иначе.
ответ дан kiri 14.01.2014 в 09:05