Les caractères de tabulation sont interprétés différemment en fonction du terminal qui va devoir les afficher.
Lors d'un “copié/collé” de la sortie d'une commande contenant des caractères de tabulation, l'affichage du texte obtenu dans les posts du forum pourrait apparaître déformé du fait de cette différence d'interprétation des caractères de tabulation.
La commande expand
permet de remplacer, dans un fichier comme dans un flux, chaque caractère de tabulation par une suite de caractères “espace” (8 par défaut).
Pour convertir en une suite de 8 caractères “espace”, chaque caractère de tabulation contenu dans le fichier ~/fichier
, et enregistrer le résultat dans le fichier ~/nouveau_fichier
:
expand ~/fichier > ~/nouveau_fichier
Pour convertir l'affichage de la commande commande
et écrire le résultat à la fin du fichier ~/commande.log
:
commande | expand >> ~/commande.log
Pour convertir l'affichage de la commande commande
en remplaçant les tabulations par 3 caractères “espace” et afficher le résultat :
commande | expand -t 3
>
, »
et |
.Ci dessous, un copié/collé du retour de la commande chage dont les caractères de tabulation posent problème, car chaque caractère de tabulation est converti en une suite de 4 caractères “espace” une fois affiché dans un post du forum.
tmpLang=$LANG && LANG=C; chage -l $USER; LANG=$tmpLang
Donne une fois copié/collé dans le forum :
Last password change : Aug 25, 2013 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
Alors qu'en utilisant la commande expand
au travers d'un pipe |
, chaque caractère de tabulation sera remplacé par une suite de 8 caractères “espace”.
Dès lors, le contenu du copié/collé ne comportant plus de caractère de tabulation, l'affichage résultant dans le forum gardera la même apparence que dans la fenêtre du terminal qui a servi de source à la copie :
tmpLang=$LANG && LANG=C; chage -l $USER | expand; LANG=$tmpLang
Donnera collé dans le forum :
Last password change : Aug 25, 2013 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
LANG
pour obtenir la version américaine de la sortie de la commande chage car la version française de cette commande présente justement un défaut au niveau des caractères de tabulation.Si je trouve une autre commande retournant des caractères de tabulation dans sa version française, je n'aurai pas à modifier et restaurer la variable LANG, et ce dokuWiKi en deviendra plus clair.
Donc en chantier pour l'instant…
infocmp $TERM
# Reconstructed via infocmp from file: /lib/terminfo/x/xterm xterm|xterm-debian|X11 terminal emulator, am, bce, km, mc5i, mir, msgr, npc, xenl, colors#8, cols#80, it#8, lines#24, pairs#64, acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, .../...
Dans le retour de commande ci-dessus, “it#8” indique que les caractères de tabulation occuperont un espace équivalent à une suite de 8 caractères “espace” dans le terminal “xterm”.
man expand
man unexpand