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

enter image description here

Это то, что я делал на своих проектах для Android.

В Android Studio мы можем выполнить аналогичную операцию, нажав Ctrl + Shift + F для поиска по всему проекту (Command + Shift + F в MacOs) и Ctrl + Shift + R для замены ((Command + Shift + R в MacO) )

18
задан 04.05.2020, 23:32

3 ответа

Ссылки

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

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

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

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

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

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

Подсказка состоит из трех частей:

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

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

    • \u расширяется до текущего имени пользователя
    • \h расширяется до текущего имени хоста
    • ] \w расширяется до текущего рабочего каталога
    • \$ расширяется до # для root и $ для всех остальных пользователей
0
ответ дан 04.05.2020, 23:33

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 [110] (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 в противном случае ничего не установлено.
0
ответ дан 04.05.2020, 23:33

В соответствии с Справочное руководство Bash , PS1 является:

Основная строка подсказки. Значением по умолчанию является \s-\v\$. См. Управление запросом для получения полного списка escape-последовательностей, которые раскрываются до отображения PS1.

Некоторые другие полезные ссылки могут быть:

0
ответ дан 04.05.2020, 23:34
  • 1
    @MarkRaymond It' s объясненный в двух ссылках, которые я дал Вам ( Печать Подсказки и подсказка PS1, объясненная для Linux/Unix ): \[ - начинают последовательность непечатаемых символов, которые могли использоваться для встраивания терминальной управляющей последовательности в подсказку; \] †“заканчивают последовательность непечатаемых символов. Просто не торопитесь и читайте тщательно;) – Sourav Das 04.05.2020, 23:34
  • 2
    @Radu - Спасибо, that' s получил меня далее, чем I' d добрался прежде. Все еще, кажется, существует мало информации относительно того, что может войти \[ и \], хотя - у Вас есть какие-либо ссылки для этого? – Sourav Das 04.05.2020, 23:34
  • 3
    Да, я считал, что - искал ссылку , что делают те непечатаемые символы. Извините, если я wasn' t ясный! – PeterO 04.05.2020, 23:35
  • 4
    Руководство удара описывает escape-последовательности PS1 полностью: gnu.org/software/bash/manual/bashref.html#Printing-a-Prompt – prox 04.05.2020, 23:35
  • 5
    Непечатаемые символы @MarkRaymond в подсказках . – Fagui Curtain 04.05.2020, 23:35

Теги

Похожие вопросы