Gdzie mogę znaleźć pełne odniesienie do zmiennej $ PS1?

20

Domyślna zmienna PS1 na moim komputerze (Kubuntu 13.10) to:

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

Szukam odwołania do tego, jak działa zmienna $ PS1, co najmniej pozwala mi zrozumieć powyższą zmienną PS1.

Mark Raymond
źródło
@ RaduRădeanu Teraz przeniosłem to na osobną odpowiedź.
Mark Raymond
Ogólnie rzecz biorąc, możesz się tym pobawić, ustawiając wartość PS1w terminalu, np PS1="How r u, \u?". Zmiana potrwa tylko do momentu zamknięcia terminalu.
djvg
Powiązane: askubuntu.com/a/984073/301745
wjandrea

Odpowiedzi:

24

Bibliografia

Do tej pory nie było ani jednego odniesienia do wszystkiego, co może się pojawić w monicie Bash - ale ponieważ jest to funkcja, która ewoluowała przez dziesięciolecia i prawdopodobnie różni się w zależności od dystrybucji, może to zbyt wiele zapytać. Próbowałem podsumować to, co uważam za najbardziej przydatne tutaj.

Ta instrukcja jest najbardziej kompletna, ale jest bardzo długa i chaotyczna. Niektóre bardziej przydatne sekcje:

  • W sekcjach 2.4 i 2.5 wyjaśniono podstawy ustawiania PS1, w tym (znaki drukowalne) znaków zmiany znaczenia.
  • W sekcji 3.4 wyjaśniono, dlaczego \[i \]są konieczne.
  • Rozdział 6 wyjaśnia wszystkie główne (niedrukowalne) sekwencje specjalne, których możesz chcieć użyć, w tym ustawienie koloru monitu i tytułu okna xterm.

Ten przewodnik wyjaśnia, jak ${}ogólnie działa Bash, a to pytanie Ask Ubuntu wyjaśnia nieco więcej o tym, jak to działa debian_chroot.

Pomiędzy nimi, myślę, że każda postać w domyślnej zmiennej Ubuntu PS1 jest wyjaśniona.

Objaśnienie monitu o Ubuntu

Monit składa się z trzech części:

  • \[\e]0;\u@\h: \w\a\] ustawia pasek tytułu okna xterm:

    • \[ uruchamia sekcję znaków niedrukowalnych
    • \e]0; jest sekwencją ucieczki dla „set xterm title” (uważam, że liczby inne niż 0 ustawią inne właściwości xterm, chociaż tego nie testowałem)
    • \u@\h: \wtytuł do użycia (patrz poniżej \u, \hi \w)
    • \a oznacza koniec tytułu
    • \] oznacza koniec znaków niedrukowalnych
  • ${debian_chroot:+($debian_chroot)}rozwija się do wartości $ debian_chroot w nawiasach, jeśli $ debian_chroot jest ustawiony. Zobacz to pytanie, aby uzyskać więcej informacji na temat $ debian_chroot.
  • \u@\h:\w\$ jest sam monit:

    • \u rozwija się do bieżącej nazwy użytkownika
    • \h rozwija się do bieżącej nazwy hosta
    • \w rozwija się do bieżącego katalogu roboczego
    • \$rozwija się #do rootowania i $wszystkich innych użytkowników
Mark Raymond
źródło
6

Zgodnie z podręcznika Reference Bash , PS1to:

Podstawowy ciąg zachęty. Wartość domyślna to \s-\v\$. Zobacz Kontrolowanie monitu , aby wyświetlić pełną listę sekwencji specjalnych, które zostały wcześniej rozwinięte PS1.

Niektóre inne dobre referencje to:

Radu Rădeanu
źródło
Podręcznik bash opisuje sekwencje specjalne PS1 w pełni: gnu.org/software/bash/manual/bashref.html#Printing-a-Prompt
glenn jackman
@Radu - Dzięki, to mnie posunęło dalej niż wcześniej. Nadal wydaje się, że niewiele jest informacji na temat tego, co może wejść do środka, \[a \]jednak - czy masz na to jakieś odniesienia?
Mark Raymond
@ MarkRaymond Wyjaśniono to w dwóch linkach, które ci dałem ( Drukowanie monitu i monitu PS1 wyjaśnione dla systemu Linux / Unix ): \[- rozpocznij sekwencję znaków niedrukowalnych, których można użyć do osadzenia sekwencji kontrolnej terminala w monicie; \]- zakończyć sekwencję znaków niedrukowalnych. Nie
spiesz się
Tak, przeczytałem to - szukałem odniesienia do tego, co robią te niedrukowalne postacie. Przepraszam, jeśli nie było jasne!
Mark Raymond
@ MarkRaymond Nie drukuje znaków w pytaniach .
Radu Rădeanu
5

Wydaje się, że ss64.com ma najlepsze referencje, jakie znalazłem.

Wyjaśnia następujące zmienne:

\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.

\[ ... \]Definiuje szereg znaków niedrukujące. Są one wymagane do prawidłowego śledzenia pozycji kursora.

W \ezachęcie rozpoczyna się sekwencja ucieczki. Więcej o tych tutaj (uwaga „Esc” na tej stronie to \esekwencja).

  • Uwaga: Nigdy tak naprawdę nie lubiłem sekwencji ucieczki. Użyj, tputaby uzyskać kod ucieczki dla Ciebie.

${debian_chroot:+($debian_chroot)}to rozszerzenie parametrów. Zobacz tutaj

  • Pisze, ($debian_chroot)jeśli $debian_chrootjest ustawiony inaczej nic.
kiri
źródło