L'«invite» ou «prompt» est, dans un terminal, le ou les caractères qui vous «invitent» à entrer vos ordres.
Ils diffèrent selon l'utilisateur:
Cette invite est configurée selon les interpréteurs de commandes par la variable «prompt» en général et peut présenter des invites plus ou moins confortables voire tout à fait farfelues.
La variable prompt
pour les CSH-like et PS1
pour les BASH-like contient le formatage de l'invite.
Par exemple:
set prompt="%B[%n@%m]%b%/:"
ou, pour modifier en plus la barre de titre dans un Xterm:
set ellipsis set prompt='%{^[]0;%n@%m, %.03, %P^G%}%B[%n@%m]%b%/:'
la variable ellipsis
modifie les caractères qui résument un chemin trop long, «…» au lieu de «<n>».
david:/<2>sys/amd64/conf>set ellipsis david:...sys/amd64/conf>pwd /usr/src/sys/amd64/conf
«…» masque les répertoire depuis la racine.
david:...sys/amd64/conf>unset ellipsis david:/<2>sys/amd64/conf>pwd /usr/src/sys/amd64/conf
«<n>» ou n est le nombre d’occurrences masquées depuis la racine. De même promptchar
défini le caractère de l'invite pour un utilisateur et pour root
:
set promptchars = \$\#
Oui, on peut ajouter une information à droite, de la même manière:
set rprompt="%d %D %w %Y"
Le caractère d'échappement est le signe %
, suivi d'un caractère qui va définir quelques variables, mais qui peuvent varier selon les shells.
%n
: Who the fuck are you ? %m
, %M
: la machine hôte, avec ou sans détails. %n@%m
- %M
: light@david -david.dmarec.homeunix.net
%#
: L'invite selon que l'on soit root
ou un utilisateur, selon promptchars
.%/
: Chemin actuel complet%~
: Chemin actuel, utilisant ~ %c0 n
,%C0 n
: Une combinaison du chemin actuel, sur n niveaux, ~, ou pas. 0
: utilise une ellipsis en tête, soit <1>
ou …
si la variable ellipsis
est définie. %.xx
: Chemin actuel, sur xx niveaux. %h
: un index d'historique. %l
: Le terminal utilisé %T
,%t
: heure actuelle, aux formats 12 et 24h. %P
: comme précédemment, avec les secondes %d
,%D
: Jour de la semaine, en lettres et en chiffres %w
,%W
: Mois en lettres et en chiffres %y
,%Y
: année sur deux ou trois chiffres. set prompt="%P - %d %D%s %Y" 18:09:14 - Sat 31 2009
%B
, %b
: je grasse, ou pas. %U
, %u
: je souligne, ou pas. %S
, %s
: inversion des couleurs %{xxxxx%}
: super séquence d'échappement, au delà du prompt et du shell, appelle les séquences du terminal. %?
: Code de retour de la dernière commande. Les interpréteurs vous permettent de changer l'invite selon le terminal, dans leur fichier de configuration, script de ressources lu au chargement:
switch ($TERM) case "xterm*": set prompt="%{^[]0;%n@%m, %c03, %P ^G%}%n:%C04%#" breaksw default: set prompt="%n:%c03%#" endsw
Ici, on utilise une commande de XTerm qui permet de changer la «décoration» de sa fenêtre.
Set Text Parameters of VT window OSC Ps ; Pt BEL
^
, signifie Control
^[
, signifie Control[
, soit ESC
, on peut aussi l'écrire: \033
ou encore \e
OSC
: Operating System Command, soit: ESC ]
BEL
: la sonnette, Control-G: ^G
ou \007
Sous les autres interpréteurs, comme ZSH, vous devez définir une fonction precmd
pour obtenir le même résultat:
(*rxvt*) # RXVT DERIVATIVES precmd () { print -Pn "\e]0;%T %n@%m %c\a" }
Vous pouvez écrire directement dans la barre de titre d'un Xterm en utilisant la commande printf(1).
printf "\033]0; kikou laulle \007"
Pensez à désactiver le prompt de la barre de titre pour une utilisation hors script; sinon, ce dernier va écrasez vos titres à chaque commande…
Souvent on veut mettre de la couleur dans ls(1) de FreeBSD, alors on essaie :
$ alias ls='ls --color'
Hélas, ça ne marche pas …
La commande ls
de FreeBSD, n'est pas la commande GNU. On vois bien une solution pointer son nez :
$ alias ls='ls -G'
Comme nous dit le manuel. On peut y lire l'existence de trois variables d'environnement :
CLICOLOR
: cette variable est un booléen qui sert à la même chose que le -G
de notre alias. il active la coloration sur ls
.CLICOLOR_FORCE
: cette variable est aussi un booléen, mais cette fois-ci, si elle est à enable, cette variable implique la coloration dans tout les cas même en mode non interactif. La coloration fait appel au caractères d'échappements, et donc je vous déconseille ce mode car sinon, dans vos scripts en piping de sortie de ls, vous aurez de drôles de surprises.LSCOLORS
: c'est ici que ça devient intéressant !:)
On peu configurer les couleurs en liste fb
, texte/fond
.
Les couleurs sont :
a
noirb
rougec
vertd
marrone
bleuf
magentag
cyanh
gris clairx
couleur par défaut du shell pour le texte et le fond X
pour le fond va soulignerUtiliser des majuscules pour le texte mettent en gras. On a affaire ici aux couleurs standards ANSI.
L'affichage dépend tout de même des capacités du mode d'affichage dans lequel on est.
Pensez à fixer vos SHELL
à xterm, xterm-color voire xterm-color-256 .
L'ordre de la séquence pour la liste est :
On peut donc avoir dans le fichier de configuration de son shell (.bashrc
,.zshrc,.cshrc
, …).
export CLICOLOR=enable export LSCOLORS=EXfxcxdxbxegedabagacad
ex:
alias solarized 'setenv LSCOLORS gxfxbEaEBxxEhEhBaDaCaD' alias basiccolor 'setenv LSCOLORS CxGxGgFxBxgefxBHxfdead' setenv MANCOLOR 1 setenv MANWIDTH tty
Les terminaux sont décrits dans gettytab(5). Il existe une option pour obtenir une connexion automatique, 'autologin
'.
Par exemple, consultez les entrées 'al.*
'
autologin|al.9600:\ :al=root:tc=std.9600: al.19200:\ :al=root:tc=std.19200: al.38400:\ :al=root:tc=std.38400: al.57600:\ :al=root:tc=std.57600: al.115200:\ :al=root:tc=std.115200: al.230400:\ :al=root:tc=std.230400: al.Pc:\ :al=root:tc=Pc alme.Pc:\ :al=david:tc=Pc
Notez la dernière que j'ai ajouté pour se connecter automatiquement à 'david
'.
Ensuite choisissez cette option dans une des entrée de ttys(5):
ttyv1 "/usr/libexec/getty alme.Pc" xterm onifexists secure
Enfin, selon le shell que vous avez choisi pour cette utilisateur, complétez le '.bashrc/.cshrc/.zshrc
' avec
[ "${TTY}" = "/dev/ttyv1" ] && exec faireuntruc
Pour faire un truc automatiquement sur ce tty.