it-mot-dan-vi.com

Có thể giữ lại đầu ra màu?

Tôi có thể nhận được ít hơn không đơn sắc đầu ra của nó?

Ví dụ: đầu ra từ git diff có màu, nhưng git diff | less không phải.

364
ripper234

Sử dụng:

git diff --color=always | less -r

--color=always ở đó để báo cho git để xuất mã màu ngay cả khi đầu ra là một đường ống (không phải là tty). Và -r có mặt để nói với less để diễn giải các mã màu đó và các chuỗi thoát khác. Sử dụng -R chỉ dành cho mã màu ANSI.

435
Stéphane Gimenez

Một tùy chọn khác là bật màu sắc và sử dụng 'less -r' làm máy nhắn tin của bạn.

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

Kết quả này trong

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

trong ~/.gitconfig của bạn

Để biết thêm thông tin, hãy xem sách Git Pro .

Các giá trị có thể cho color.ui có thể được tìm thấy trong trang man của git-config. Đầu ra của man git-config | grep "color.ui$" -A8

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.
61

Sử dụng -r (--raw-control-chars) tùy chọn ít hơn, hoặc cũng -R (chỉ các chuỗi thoát ANSI).

Tôi có một bí danh cho điều này trong ~/.bashrc

alias rless='less -r'
29
enzotib

Ngoài ra tree có một tùy chọn để buộc màu trên:

tree -C | less -r

Và cứ thế cho ls:

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

Chỉ cần thêm phiên bản khác vào "sử dụng less -r":

Sử dụng biến môi trường LESS với giá trị r (hoặc thêm r vào bất cứ thứ gì đã có)

Ví dụ: khi tôi sử dụng nó trong .bashrc:

export LESS=-Xr

X dừng màn hình xóa khi thoát ít hơn.

11
MortenSickel

Trong trường hợp bất cứ ai quan tâm đến việc phân trang json với jqless thì có thể đạt được bằng cách sử dụng:

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

ví dụ.

jq -C . file.json | less -R

Nguồn: https://github.com/stedolan/jq/issues/764#issuecomment-95355331

9
dimid

Tôi biết điều này đã cũ và nhiều người đã cung cấp câu trả lời đúng nhưng tôi muốn nói thêm rằng nó luôn luôn tốt hơn để sử dụng less -R và không less -r nếu bạn chỉ cần màu ANSI là -rmay vấn đề trường hợp trong việc hiển thị các ký tự.

Từ hướng dẫn:

   -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