Comment utiliser moins dans un script sans obtenir les caractères d'échappement ESC?

12

Lorsque j'utilise lesssur la ligne de commande, la sortie est comme entrez la description de l'image ici

mais quand j'utilise lessdepuis un script bash, j'obtiens: <code> [! [entrez la description de l'image ici] [1]] [1] </code>

Comment puis-je utiliser lessdans un script bash et ne pas obtenir tous les caractères d'échappement et le faire fonctionner comme il le fait sur la ligne de commande interactive?

Michael Durrant
la source
1
Vous avez une variable d'environnement dont le nom commence par LESSune valeur définie dans votre shell interactif, mais pas dans votre script shell. Faites printenv | grep LESSpour découvrir son identité, puis vous pouvez également le définir dans votre script shell, ou utiliser les options de ligne de commande équivalentes.
zwol

Réponses:

29

Utilisez le -Rdrapeau:

-r ou --raw-control-chars

Provoque l'affichage des caractères de contrôle "bruts". La valeur par défaut est d'afficher les caractères de contrôle en utilisant la notation caret; par exemple, un contrôle-A (octal 001) est affiché comme "^ A". Avertissement: lorsque l'option -r est utilisée, less ne peut pas suivre l'apparence réelle de l'écran (car cela dépend de la façon dont l'écran réagit à chaque type de caractère de contrôle). Ainsi, divers problèmes d'affichage peuvent survenir, tels que de longues lignes divisées au mauvais endroit.

-R ou --RAW-CONTROL-CHARS

Comme -r, mais seules les séquences d'échappement "couleur" ANSI sont sorties sous forme "brute". Contrairement à -r, l'apparence de l'écran est conservée correctement dans la plupart des cas. Les séquences d'échappement "couleur" ANSI sont des séquences de la forme:

           ESC [ ... m

où le "..." est zéro ou plusieurs caractères de spécification de couleur Afin de garder une trace de l'apparence de l'écran, les séquences d'échappement de couleur ANSI sont supposées ne pas déplacer le curseur. Vous pouvez faire en sorte que les caractères autres que "m" puissent terminer les séquences d'échappement couleur ANSI en définissant la variable d'environnement LESSANSIENDCHARS sur la liste des caractères qui peuvent terminer une séquence d'échappement couleur. Et vous pouvez faire moins penser que des caractères autres que ceux standard peuvent apparaître entre l'ESC et le m en définissant la variable d'environnement LESSANSIMIDCHARS sur la liste des caractères qui peuvent apparaître.

Depuis la lesspage de manuel.

coffeMug
la source