web-dev-qa-db-fra.com

Où puis-je trouver une référence complète pour la variable $ PS1?

La variable PS1 par défaut sur ma machine (Kubuntu 13.10) est la suivante:

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

Je cherche une référence sur le fonctionnement de la variable $ PS1 qui, au minimum, me permette de comprendre la variable PS1 ci-dessus.

20
Mark Raymond

Références

Jusqu'à présent, il n'y avait pas une seule référence pour tout ce qui pouvait figurer dans un Bash Prompt - mais comme c'est une fonctionnalité qui a évolué au fil des décennies et qui varie probablement d'une distro à l'autre, c'est peut-être trop demander. J'ai essayé de résumer ce que j'ai trouvé le plus utile ici.

Ce tutoriel est le plus complet, mais est très long et décousu. Certaines des sections les plus utiles:

  • Section 2.4 et 2.5 expliquent les bases du paramétrage de PS1, y compris les caractères d'échappement (imprimables).
  • Section 3.4 explique pourquoi \[ et \] sont nécessaires.
  • Section 6 explique toutes les séquences d'échappement principales (non imprimables) que vous pouvez utiliser, y compris le réglage de la couleur de l'invite et du titre d'une fenêtre xterm.

Ce guide explique le fonctionnement de ${} dans Bash en général et cette question Ask Ubunt explique un peu plus en détail la façon dont cela fonctionne avec debian_chroot.

Entre ceux-ci, je pense que tous les caractères de la variable par défaut Ubuntu PS1 sont expliqués.

Explication de l'invite Ubuntu

L'invite comprend trois parties:

  • \[\e]0;\u@\h: \w\a\] définit la barre de titre d'une fenêtre xterm:

    • \[ démarre une section de caractères non imprimables
    • \e]0; est la séquence d'échappement de 'set xterm title' (je crois que des nombres autres que 0 définiront d'autres propriétés xterm, bien que je ne l'aie pas testé)
    • \u@\h: \w le titre à utiliser (voir ci-dessous \u, \h et \w)
    • \a marque la fin du titre
    • \] marque la fin des caractères non imprimables
  • ${debian_chroot:+($debian_chroot)} passe à la valeur de $ debian_chroot entre parenthèses si $ debian_chroot est défini. Voir this question pour plus d'informations sur $ debian_chroot.
  • \u@\h:\w\$ est l'invite elle-même:

    • \u passe au nom d'utilisateur actuel
    • \h se développe au nom d'hôte actuel
    • \w se développe dans le répertoire de travail actuel
    • \$ se développe en # pour root et $ pour tous les autres utilisateurs
23
Mark Raymond

Selon Manuel de référence de Bash , PS1 est:

La chaîne d'invite principale. La valeur par défaut est \s-\v\$. Voir Contrôle d'une invite , pour obtenir la liste complète des séquences d'échappement développées avant l'affichage de PS1.

Quelques autres bonnes références peuvent être:

6
Radu Rădeanu

ss64.com semble avoir la meilleure référence que j'ai trouvée.

Il explique les variables suivantes:

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

\[ ... \] définit une série de caractères non imprimables. Ils doivent garder la trace de la position du curseur correctement.

Le \e de votre invite lance une séquence d'échappement. Plus d'informations sur les ici (notez que "Esc" sur cette page correspond à la séquence \e).

  • Remarque: je n'ai jamais vraiment aimé les séquences d'échappement. Utilisez tput pour obtenir le code d'échappement pour vous.

${debian_chroot:+($debian_chroot)} est une expansion de paramètre. Voir ici

  • Il écrit ($debian_chroot) si $debian_chroot est défini, sinon rien.
5
kiri