74 votes

Afficher les caractères spéciaux sous Unix lors de l'utilisation de la commande 'less'.

J'aimerais savoir comment afficher les caractères spéciaux en utilisant la commande 'less'. Par exemple, je veux voir les caractères non imprimables avec une notation spéciale. Par exemple, dans l'éditeur 'vi', j'utilise "set list on" pour voir les caractères de fin de ligne représentés par le caractère dollar '$'. De la même façon, je voudrais faire cela en utilisant la commande 'less'.

J'ai consulté le moindre manuel d'Unix, mais en vain.

76voto

shellter Points 15304

Less va chercher dans son environnement s'il existe une variable nommée LESS

Vous pouvez définir LESS dans un de vos ~/.profile (.bash_rc, etc, etc) et ensuite, à chaque fois que vous exécutez less de la ligne de commande, il trouvera le LESS.

Essayez d'ajouter ceci

export LESS="-CQaix4"

C'est la configuration que j'utilise, il y a quelques comportements intégrés qui peuvent vous déconcerter, vous pouvez donc trouver la signification de tous ces éléments dans la fonction d'aide de la page less il suffit d'appuyer sur la touche 'h' et de fouiner, ou de courir. less --help .

Edit :

J'ai regardé l'aide, et j'ai remarqué qu'il y a également une fonction -r option

-r  -R  ....  --raw-control-chars  --RAW-CONTROL-CHARS
                Output "raw" control characters.

Je suis d'accord que cat peut correspondre le plus exactement à vos besoins.

cat -vet file | less

Ajoutera '$' à la fin de chaque ligne et convertira le caractère de tabulation en visuel '^I'.

cat --help
   (edited)
    -e                       equivalent to -vE
    -E, --show-ends          display $ at end of each line
    -t                       equivalent to -vT
    -T, --show-tabs          display TAB characters as ^I
    -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB

J'espère que cela vous aidera.

23 votes

Les informations sur les chats sont utiles. Les options LESS inexpliquées sont beaucoup moins utiles. La réponse serait meilleure si vous les supprimiez, car je ne pense pas qu'elles soient pertinentes pour la question.

1 votes

Où puis-je en savoir plus sur la notation ^ et M- ? Je sais que lorsque je tape CTRL+C dans l'interface CLI, j'obtiens ^C, mais je n'ai aucune idée de ce qu'est ^M.

0 votes

Hmm, je m'attendais man ascii pour transporter nativement cette information, mais il a fallu regarder dans man-ascii.com et cliquez sur le bouton dans la ligne inférieure pour Nom vs Caractère pour faire apparaître les versions ^M dans le tableau. Je pense que les origines de cette version se trouvent dans l'ancienne documentation Unix, ou même avant Unix, comme beaucoup de caractères de contrôle pour contrôler les télétypes. (je n'en ai jamais vu moi-même ;-) ) . Bonne chance.

57voto

Costi Ciudatu Points 13020

Vous pouvez le faire avec cat et qui pipe la sortie à moins :

cat -e yourFile | less

Cet extrait de man cat explique ce que -e signifie :

   -e     equivalent to -vE

   -E, --show-ends
          display $ at end of each line

   -v, --show-nonprinting
          use ^ and M- notation, except for LFD and TAB

11 votes

... ou cat -eT yourfile | less si vous voulez voir les caractères de tabulation.

2 votes

Si précis et à la pinte. J'ai sauvé ma journée

3 votes

J'ai eu des problèmes avec le T majuscule, si quelqu'un a le même problème utilisez simplement cat -et yourfile | less et cela devrait fonctionner

14voto

James Brown Points 17362

Pour less utiliser -u pour afficher les retours de chariot ( ^M ) et les espaces arrière ( ^H ), ou -U pour afficher la page précédente et les onglets ( ^I ) par exemple :

$ awk 'BEGIN{print "foo\bbar\tbaz\r\n"}' | less -U 
foo^Hbar^Ibaz^M

(END)

Sans le -U le commutateur de sortie serait :

fobar   baz

(END)

Voir man less pour une description plus précise des caractéristiques.

3voto

flow2k Points 706

Dans le même esprit que https://stackoverflow.com/a/6943976/7154924 :

cat -A

-A, --show-all
       equivalent to -vET
-v, --show-nonprinting
       use ^ and M- notation, except for LFD and TAB
-E, --show-ends
       display $ at end of each line
-T, --show-tabs
       display TAB characters as ^I

Alternativement, ou en même temps, vous pouvez envoyer un tuyau à tr pour substituer des caractères arbitraires à ceux désirés pour l'affichage, avant de les transmettre à un pager comme less si vous le souhaitez.

2 votes

J'aime que le piping soit utilisé avec ces arguments pour sortir un point en cas d'impossibilité d'impression, car j'ai parfois besoin que les choses soient alignées dans des champs à largeur fixe : tr -c '[:print:]\r\n' '.'

0voto

caxcaxcoatl Points 407

Maintenant, parfois vous avez déjà less ouvert, et vous ne pouvez pas utiliser cat sur celui-ci. Par exemple, vous avez fait un | less et vous ne pouvez pas simplement rouvrir un fichier, car il s'agit en fait d'un flux.

Si tout ce dont vous avez besoin est d'identifier la fin de la ligne, un moyen simple consiste à rechercher le dernier caractère de la ligne : /.$ . La recherche met en évidence le dernier caractère, même s'il s'agit d'un blanc, ce qui permet de l'identifier facilement.

Cela ne sera utile que pour les cas de fin de ligne. Si vous avez besoin d'autres caractères spéciaux, vous pouvez utiliser la fonction cat -vet solution ci-dessus avec des marques et des tuyaux :

  • marquez le haut du texte qui vous intéresse : ma
  • allez au bas du texte qui vous intéresse et marquez-le également : mb
  • revenir à la marque a : 'a
  • tuyau de a à b par le biais de cat -vet et voir le résultat dans une autre commande less : |bcat -vet | less

Cela ouvrira une autre less qui montre le résultat de l'exécution de cat -vet sur le texte qui se trouve entre les marques a et b .

Si vous voulez le tout, faites plutôt g|$cat -vet | less pour aller à la première ligne et filtrer toutes les lignes à travers cat .

L'avantage de cette méthode par rapport à less est qu'il ne modifie pas le résultat que vous voyez à l'écran.

On pourrait penser que huit ans après que cette question ait été postée à l'origine, less aurait cette fonctionnalité... Mais je ne peux même pas voir une demande de fonctionnalité pour cela sur https://github.com/gwsw/less/issues

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X