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.
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:
\[
et \]
sont nécessaires.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.
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 utilisateursSelon 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 dePS1
.
Quelques autres bonnes références peuvent être:
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
).
tput
pour obtenir le code d'échappement pour vous.${debian_chroot:+($debian_chroot)}
est une expansion de paramètre. Voir ici
($debian_chroot)
si $debian_chroot
est défini, sinon rien.