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.
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.
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'
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
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.
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
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 -r
peut 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