Le terminal (ou émulateur de terminal si on est sous X) peut paraître de prime abord assez austère. Les quelques astuces qui suivent visent à le rendre plus agréable, voire à en faire un environnement de travail stylé et séduisant.
La plupart des astuces fonctionneront sous votre émulateur habituel (stterm (suckless st, le choix de votre serviteur ), xterm, konsole, gnome-terminal, sakura, terminal XFCE…) et avec le shell Bash.
Il faut rajouter la fonction suivante dans votre .bashrc
:
man() { env LESS_TERMCAP_mb=$'\E[01;32m' \ LESS_TERMCAP_md=$'\E[1;32m' \ LESS_TERMCAP_me=$'\E[0m' \ LESS_TERMCAP_se=$'\E[0m' \ LESS_TERMCAP_so=$'\E[1;31m' \ LESS_TERMCAP_ue=$'\E[0m' \ LESS_TERMCAP_us=$'\E[1;33m' \ man "$@" }
Ce qui permet d'utiliser LESS avec les en-têtes de catégories et texte en gras en vert, les éléments soulignés en jaune et les résultats de recherche en rouge gras.
Merci à captnfab pour ça
Plus haut a été utilisé la syntaxe termcap (la librairie termcap, chez GNU/Debian est obsolète).
Elle est remplacée par la librairie terminfo (qui pour rétrocompatibilité, prend en charge la syntaxe de termcap).
Ici est proposé d'utiliser terminfo, pour obtenir le même rendu qu'avec le pager most (non installé par défaut).
Un fichier de capacité terminfo est un fichier binaire, obtenu (compilé) par la commande tic.
Créer le fichier ~/.terminfo/mostlike.src
en y ajoutant le code source suivant :
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor mostlike|manpages with color looking like most, am, hs, km, mir, msgr, xenl, cols#80, it#8, lines#24, wsl#40, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, bold=\E[1m\E[31m, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, dsl=\E]0;\007, ed=\E[J, el=\E[K, enacs=\E)0, fsl=^G, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, rc=\E8, rev=\E[7m\E[34m, ri=\EM, rmacs=^O, rmcup=\E[J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[1;30m\E[47m, smul=\E[32m, tbc=\E[3g, tsl=\E]0;, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
Puis le compiler avec la commande tic.
xterm-pcolor
.infocmp xterm-pcolor
.bold
, smso
, smul
ont été modifiés, pour y indiquer les couleurs du pager most.2J
, a été modifiée en J
, pour les paramètres clear
et rmcup
.tic ~/.terminfo/mostlike.src
Et créer l'alias suivant (dans ~/.bash_aliases
) :
alias man="TERM=mostlike PAGER=less man"
PAGER
est définie avec la valeur less
(le pager installé et utilisé par défaut).
Ne reste plus qu'à réinterpréter .bash_aliases
source ~/.bash_aliases
Pour cela, installer le paquet source-highlight
:
apt-get install source-highlight
puis ajouter dans son .bashrc
les lignes suivantes :
export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s" export LESS=' -R '
Ouvrez un nouveau terminal ou re-éxecuter le .bashrc
:
source .bashrc
et hop, magie les fichiers de code que vous consultez avec less
disposent de la couleur ! ;)
Pour lire les manpages (et autres) avec vim
, ajouter ceci dans votre .bashrc
export PAGER="/bin/sh -c \"unset PAGER;col -b -x | \ vim -R -c 'set ft=man nomod nolist' -c 'map q :q<CR>' \ -c 'map <SPACE> <C-D>' -c 'map b <C-U>' \ -c 'nmap K :Man <C-R>=expand(\\\"<cword>\\\")<CR><CR>' -\""
Le .bashrc
fournit par Debian dispose déjà de cette fonction mais nous allons l'améliorer.
Chercher les lignes suivantes :
# If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
et ajouter en dessous :
show_command_in_title_bar() { case "$BASH_COMMAND" in *\033]0*) ;; *) echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD} > ${BASH_COMMAND}\007" ;; esac } trap show_command_in_title_bar DEBUG
Ainsi le titre de votre terminal comprend votre login, le nom de la machine, le dossier actuel et, le cas échéant, le nom du programme en cours d'éxecution.
Cela ne fonctionnera pas pour les utilisateurs de zsh
qui préféreront ajouter le code suivant à leur .zshrc
:
if [ "$SHELL" = '/bin/zsh' ] then case $TERM in st*|*term) precmd() { print -Pn "\e]0;%n@%m:%~\a" } preexec () { print -Pn "\e]0;%n@%m:$1\a" } ;; esac fi
— Sogal 22/08/2015 12:22