Де я можу знайти повну посилання на змінну $ PS1?


20

Змінна PS1 на моїй машині (Kubuntu 13.10) така:

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

Я шукаю посилання на те, як працює змінна $ PS1, яка, як мінімум, дозволяє мені зрозуміти вищевказану змінну PS1.


@ RaduRădeanu Я переніс це на окрему відповідь зараз.
Марк Реймонд

Як загальна примітка, ви можете пограти з цим, встановивши значення PS1терміналу, наприклад PS1="How r u, \u?". Зміна триватиме лише до закриття терміналу.
djvg

Пов’язано: askubuntu.com/a/984073/301745
wjandrea

Відповіді:


24

Список літератури

Поки що не було жодної посилання на все, що може відбуватися в підказці Баша - але оскільки це особливість, яка розвивалася протягом десятиліть і, ймовірно, змінюється від дистрибутива до дистрибутива, можливо, це занадто багато, щоб запитати. Я спробував узагальнити те, що мені було найкориснішим.

Цей спосіб роботи є найбільш повним, але дуже довгим і невпинним. Деякі з корисніших розділів:

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

Цей посібник пояснює, як ${}працює Bash загалом, і це питання Ask Ubuntu пояснює трохи більше про те, як це працює debian_chroot.

Між тим, я думаю, що кожен символ у змінній Ubuntu PS1 за замовчуванням пояснюється.

Пояснення підказок Ubuntu

У підказку є три частини:

  • \[\e]0;\u@\h: \w\a\] встановлює рядок заголовка вікна xterm:

    • \[ починає розділ символів, що не друкуються
    • \e]0; є послідовністю виходу для "встановити назву xterm" (я вважаю, що числа, окрім 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 та $для всіх інших користувачів

6

Відповідно до Довідкового посібника Баша , PS1це:

Первинний рядок підказок. Значенням за замовчуванням є \s-\v\$. Див. Розділ Керування підказкою , відображається повний список послідовностей евакуації, розширених раніше PS1.

Деякі інші хороші посилання можуть бути:


Посібник з bash повністю описує послідовності виходу PS1: gnu.org/software/bash/manual/bashref.html#Printing-a-Prompt
glenn jackman

@Radu - Дякую, це мене далі, ніж раніше. Там до цих пір , здається, мало інформації про те , що може піти всередину \[і \], хоча - у вас є якісь - або посилання на це?
Марк Реймонд

@MarkRaymond Це пояснюється в двох посиланнях , які я вам дав ( Друк рядки і PS1 запрошення пояснено для Linux / Unix ): \[- початок послідовності недрукованих символів, які можуть бути використані для вбудовування термінальної послідовності управління в командний рядок; \]- закінчення послідовності символів, що не друкуються. Просто знайдіть свій час і уважно читайте;)
Radu Rădeanu

Так, я прочитав це - шукав посилання на те, що роблять ці недрукарські символи. Вибачте, якщо я не зрозумів!
Марк Реймонд

@MarkRaymond Персонажі без друку в запитах .
Radu Rădeanu

5

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вашому підказці починається послідовність аварійного виходу. Детальніше про ці тут (примітка "Esc" на цій сторінці є \eпослідовністю).

  • Примітка: я ніколи не любив послідовності втечі. Використовуйте tputдля отримання коду втечі для вас.

${debian_chroot:+($debian_chroot)}- це розширення параметрів. Дивіться тут

  • Він пише, ($debian_chroot)якщо $debian_chrootінше не встановлено нічого.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.