web-dev-qa-db-fra.com

Peut-on moins conserver la sortie colorée?

Puis-je obtenir moins pour ne pas monochrome sa sortie?

Par exemple, la sortie de git diff est coloré, mais git diff | less n'est pas.

364
ripper234

Utilisation:

git diff --color=always | less -r

--color=always est là pour dire à git de sortir les codes couleurs même si la sortie est un tube (pas un tty). Et -r est là pour dire à less d'interpréter ces codes de couleur et autres séquences d'échappement. Utilisation -R pour les codes couleur ANSI uniquement.

435
Stéphane Gimenez

Une autre option serait d'activer les couleurs et d'utiliser "moins -r" comme téléavertisseur.

git config --global color.ui true
git config --global core.pager 'less -r'

Il en résulte

[color]
    ui = true
[core]
    pager = less -r

dans votre ~/.gitconfig

Pour plus d'informations, consultez le livre Pro Git .

Valeurs possibles pour color.ui se trouve dans la page de manuel de git-config. La sortie de man git-config | grep "color.ui$" -A8 est

color.ui
    This variable determines the default value for variables such as color.diff and
    color.grep that control the use of color per command family. Its scope will expand as
    more commands learn configuration to set a default for the --color option. Set it to
    false or never if you prefer Git commands not to use color unless enabled explicitly
    with some other configuration or the --color option. Set it to always if you want all
    output not intended for machine consumption to use color, to true or auto (this is the
    default since Git 1.8.4) if you want such output to use color when written to the
    terminal.

Utilisation -r (--raw-control-chars) option à moins, ou aussi -R (uniquement les séquences d'échappement ANSI).

J'ai un alias pour cela dans ~/.bashrc

alias rless='less -r'
29
enzotib

tree a également une option pour forcer les couleurs sur:

tree -C | less -r

Et ainsi de suite pour ls:

ls -lR --color | less -r
17
Antonio Bardazzi

Juste pour ajouter une autre version sur le "use less -r ":

Utilisez la variable d'environnement LESS avec la valeur r (ou ajoutez r à ce qu'elle est déjà)

Par exemple, comme je l'utilise dans mon .bashrc:

export LESS=-Xr

Le X s'arrête l'écran ne s'efface pas en sortant moins.

11
MortenSickel

Au cas où quelqu'un souhaiterait paginer un json avec jq et less, cela peut être réalisé en utilisant:

jq -C <jq args> file.json | less -R

par exemple.

jq -C . file.json | less -R

Source: https://github.com/stedolan/jq/issues/764#issuecomment-95355331

9
dimid

Je sais que c'est vieux et beaucoup ont déjà fourni la bonne réponse mais j'aimerais ajouter qu'il est toujours préférable d'utiliser less -R et pas less -r si vous avez seulement besoin des couleurs ANSI comme -rpeut entraîner des problèmes d'affichage des caractères.

Du manuel:

   -r or --raw-control-chars
          Causes "raw" control characters to be displayed.   The  default
          is  to display control characters using the caret notation; for
          example, a control-A (octal 001) is displayed as  "^A".   Warn‐
          ing:  when the -r option is used, less cannot keep track of the
          actual appearance of the screen (since this depends on how  the
          screen responds to each type of control character).  Thus, var‐
          ious display problems may result,  such  as  long  lines  being
          split in the wrong place.

   -R or --RAW-CONTROL-CHARS
          Like  -r,  but only ANSI "color" escape sequences are output in
          "raw" form.  Unlike -r, the  screen  appearance  is  maintained
          correctly  in  most  cases.   ANSI "color" escape sequences are
          sequences of the form:

               ESC [ ... m
6
Naheel