Invite, prompt

De Diablotins.org.

Version du 11 octobre 2011 à 20:17 par David Marec (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)


Qu'est ce qu'un terminal peut faire pour vous ?
Image:brush.png
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:

  1. «#» Administrateur.
  2. «$» Autres utilisateurs.

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.




Sommaire

Bases

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:
un prompt pour 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'occurences masquées depuis la racine. De même «promptchars» défini le caractère de l'invite pour un utilisateur et pour root:

set promptchars = \$\# 

A droiiiite, droite

Oui, on peut ajouter une information à droite, de la même manière:

set rprompt="%d %D  %w %Y"

Mais qu'est ce que c'est que ce charabia ?

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.

Qui? 
%n: L'utilisateur
%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.
Où ?
%/: 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é
Quand ?
%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
Coloriage
%B, %b: je grasse, ou pas.
%U, %u: je souligne, ou pas.
%S, %s: inversion des couleurs
trucs de ouf
%{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.

CSH

L' interpréteur CSh/Tcsh va vous permettre de changer l'invite selon le terminal, à l'aide de “.cshrc”, 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
Ps = 0 -> Change Icon Name and Window Title to Pt
  • ^”, 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

La liste des caractères de contrôle de Xterm est documentée dans le fichier ctlseqs.txt des sources de Xterm.
Use the source Luke !


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

Outils personnels
Projets :