Table des matières

Qu'est ce qu'un terminal peut faire pour vous ?

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.

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:

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 = \$\#

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.

set prompt="%P - %d %D%s %Y"
18:09:14 - Sat 31 2009

Terminal

Les interpréteurs vous permettent de changer l'invite selon le terminal, dans leur fichier de configuration, script de ressources lu au chargement:

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

Sous les autres interpréteurs, comme ZSH, vous devez définir une fonction precmd pour obtenir le même résultat:

.zshrc
(*rxvt*)       # RXVT DERIVATIVES
        precmd () { print -Pn "\e]0;%T %n@%m %c\a" }
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…

Colorier ls

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 :

On peu configurer les couleurs en liste fb, texte/fond. Les couleurs sont :

Utiliser 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 :

  1. répertoire
  2. lien symbolique
  3. socket
  4. tube
  5. exécutable
  6. bloc spécial
  7. caractère spécial
  8. exécutable avec bit setuid
  9. exécutable avec bit setgid
  10. répertoire en sticky bit, en écriture pour tout le monde
  11. répertoire en écriture pour tout le monde, sans sticky bit

On peut donc avoir dans le fichier de configuration de son shell (.bashrc,.zshrc,.cshrc, …).

.bashrc
  export CLICOLOR=enable
  export LSCOLORS=EXfxcxdxbxegedabagacad

ex:

.cshrc
alias solarized 'setenv LSCOLORS gxfxbEaEBxxEhEhBaDaCaD'
alias basiccolor 'setenv LSCOLORS CxGxGgFxBxgefxBHxfdead'
setenv  MANCOLOR        1
setenv  MANWIDTH        tty

Autologin

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

/etc/gettytab
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):

/etc/ttys
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

.bashrc
[ "${TTY}" = "/dev/ttyv1" ] && exec faireuntruc

Pour faire un truc automatiquement sur ce tty.