logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


expand

Nota

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

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 est 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 série d'espaces (8 par défaut).

Utilisation

Pour convertir toutes les tabulations du fichier ~/fichier en espaces et enregistrer le résultat dans ~/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 espaces et afficher le résultat :

commande | expand -t 3
Ces commandes utilisent les redirections de flux, voir la documentation sur le shell pour plus d'informations.

TPs

Application à la commande ''chage''

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 espaces une fois affichée 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 espaces.
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

:-D

J'ai dû modifier la variable LANG pour obtenir la version américaine de la sortie de la commande chage car la version française 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…

Voir aussi

infocmp $TERM
man expand
man unexpand
1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/systeme/expand.1380895180.txt.gz · Dernière modification: 04/10/2013 15:59 par captnfab

Pied de page des forums

Propulsé par FluxBB