Màu sắc trong trang Man


63

Khi tôi nhìn vào một trang nam trong 'bảng điều khiển' (không phải xterm) tôi thấy một số màu, nhưng tôi không nhận được điều này trong xterm(ví dụ konsole) của tôi có cách nào tôi có thể kích hoạt điều này không? hy vọng một giải pháp khá đơn giản?

Câu trả lời:


78

Bạn cần sử dụng termcap(5)tính năng này. Trang người đàn ông trên một số Unices nói rằng công cụ này đã lỗi thời và để sử dụng terminfo, nhưng nó vẫn có sẵn trên những người khác (và terminfophức tạp hơn).

Quan trọng hơn, công lessdụng termcap.


Cài đặt màu cho less

Tôi làm như sau để lessman(sử dụng less) sẽ có màu:

$ cat ~/.LESS_TERMCAP 
export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan
export LESS_TERMCAP_me=$(tput sgr0)
export LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4) # yellow on blue
export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7) # white
export LESS_TERMCAP_ue=$(tput rmul; tput sgr0)
export LESS_TERMCAP_mr=$(tput rev)
export LESS_TERMCAP_mh=$(tput dim)
export LESS_TERMCAP_ZN=$(tput ssubm)
export LESS_TERMCAP_ZV=$(tput rsubm)
export LESS_TERMCAP_ZO=$(tput ssupm)
export LESS_TERMCAP_ZW=$(tput rsupm)
export GROFF_NO_SGR=1         # For Konsole and Gnome-terminal

Và sau đó ~/.bashrc, tôi làm điều này:

# Get color support for 'less'
export LESS="--RAW-CONTROL-CHARS"

# Use colors for less, man, etc.
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP

LƯU Ý: Xem Tài liệu về LESS_TERMCAP_*các biến? cho làm thế nào điều này hoạt động.

Kết quả cuối cùng

    trang của người đàn ông


7
Tôi tin rằng lý do điều này hoạt động theo cách của nó là bởi vì 'giao diện điều khiển' dịch 'gạch chân' thành màu sắc, trong đó các công cụ X11 hỗ trợ gạch chân. Bạn có thể kiểm tra lý thuyết này bằng cách gõ echo -e "\e[04mhello world\e[0m"vào cả bàn điều khiển và thiết bị đầu cuối X11 của bạn và thấy sự khác biệt. Vì vậy, bản hack ở trên đã lạm dụng termcap để nói dối với LESS về những mã cần thiết để phát ra đậm / gạch chân và buộc nó phải tạo mã thoát màu thay thế.
Kent Fredric

7
Thật vậy, việc dịch gạch chân thành màu xanh có lý do lịch sử, quay trở lại chế độ văn bản của bộ điều hợp đồ họa PC gốc MDA và CGA (thực tế chế độ văn bản CGA vẫn có sẵn cho đến nay). Các bộ điều hợp đồ họa đó lưu trữ hai byte cho mỗi ký tự: Một giữ mã ASCII, một giữ các thuộc tính. MDA diễn giải byte thuộc tính là sự kết hợp của gạch chân, sáng, nhấp nháy và nghịch đảo, trong khi CGA diễn giải byte đó là màu nền trước và màu nền. Và nó đã xảy ra rằng thuộc tính MDA cho gạch chân bằng với thuộc tính CGA cho màu xanh trên nền đen.
celtschk

3
Điều này không hoạt động trong Konsole hoặc Gnome-terminal. Tôi đặt chúng và thay đổi màu duy nhất là cho con trỏ và trang trạng thái. Tôi bật ra tôi cần : export GROFF_NO_SGR=1.
CMCDragonkai

2
Đó là rất nhiều vỏ phụ được tạo ra. Lợi thế của phương pháp đơn giản này là gì?
Tom Hale

1
@TomHale, chủ yếu là khả năng tương thích giữa các hệ thống / thiết bị đầu cuối (và khả năng chia sẻ tập lệnh với người khác theo cách không rõ ràng). Nếu bạn từng thấy mình làm việc trên một hộp sử dụng các mã điều khiển khác nhau và bạn scp / rsync hồ sơ hệ vỏ của bạn với nó, khi các mã điều khiển được mã hóa cứng như trong ví dụ đó, chúng có thể không hoạt động như mong đợi ở đích đến máy, và bạn có thể kết thúc với đầu ra bị cắt xén. Tất nhiên, nếu tập lệnh sẽ chỉ chạy trên một hoặc hai máy / terminal-emus đã biết, thì cách tiếp cận được mã hóa cứng là tốt.
Đánh dấu G.

15

Bạn có thể giải quyết vấn đề này bằng cách sử dụng một máy nhắn tin khác, ví dụ most. mansẽ thực sự sử dụng chương trình được chỉ định trong PAGERbiến môi trường. Từ trang người đàn ông (1) :

MANPAGER, PAGER

Nếu $ MANPAGER hoặc $ PAGER được đặt ($ MANPAGER được sử dụng theo sở thích), giá trị của nó được sử dụng làm tên của chương trình được sử dụng để hiển thị trang thủ công. Theo mặc định, pager -s được sử dụng.

Giá trị có thể là tên lệnh đơn giản hoặc lệnh có đối số và có thể sử dụng trích dẫn shell (dấu gạch chéo ngược, dấu ngoặc đơn hoặc dấu ngoặc kép).

Nó có thể không sử dụng đường ống để kết nối nhiều lệnh; nếu bạn cần điều đó, hãy sử dụng tập lệnh bao bọc, có thể lấy tệp để hiển thị dưới dạng đối số hoặc trên đầu vào tiêu chuẩn.

Nếu mostđược cài đặt trên hệ thống của bạn, hãy thử điều này, trước khi khởi chạy man:

export PAGER=most

2
mostnên được cài đặt, để làm việc này
enzotib

3
mostcó các phím bấm lạ ... không thể cấu hình.
Mateen Ulhaq

10

Các gạch chân mặc định làm tổn thương đôi mắt của tôi. Thiết lập này cải thiện đáng kể manviệc đọc trang của tôi :

Ví dụ trang màu người đàn ông

Thêm phần sau vào `~ .bashrc ':

# Have less display colours
# from: https://wiki.archlinux.org/index.php/Color_output_in_console#man
export LESS_TERMCAP_mb=$'\e[1;31m'     # begin bold
export LESS_TERMCAP_md=$'\e[1;33m'     # begin blink
export LESS_TERMCAP_so=$'\e[01;44;37m' # begin reverse video
export LESS_TERMCAP_us=$'\e[01;37m'    # begin underline
export LESS_TERMCAP_me=$'\e[0m'        # reset bold/blink
export LESS_TERMCAP_se=$'\e[0m'        # reset reverse video
export LESS_TERMCAP_ue=$'\e[0m'        # reset underline
export GROFF_NO_SGR=1                  # for konsole and gnome-terminal

Để giành chiến thắng, kết hợp với export MANPAGER='less -s -M +Gg' (nguồn) để hiển thị tỷ lệ phần trăm của bạn vào tài liệu.


3
Như @CMCDragonkai đã đề cập trong một nhận xét về câu trả lời khác, điều này đòi hỏi export GROFF_NO_SGR=1phải hoạt động trên một số trình giả lập thiết bị đầu cuối.
Ben

1
Vì chiến thắng !! Tôi thích% hiển thị export MANPAGER='less -s -M +Gg'thêm.
MikeyE

5

Nếu bạn sử dụng Oh My Zsh , bạn có thể thêm colored-man-pagesvào pluginsmảng trong .zshrctệp của mình .


3

Tiết kiệm 'nhất' liên tục

Thiết bị đầu cuối mở ( Ctrl+ Alt+ T)

  1. Cài đặt 'nhất'.

    sudo apt-get install most
    
  2. chỉnh sửa .bashrc, gõ:

    nano ~/.bashrc
    
  3. Thêm các dòng sau:

    # color man-pages persistently
    export PAGER='most'
    
  4. Lưu lại

    ( Ctrl+ O) -> Enter-> ( Ctrl+ X)

  5. Làm tươi

    source ~/.bashrc
    
  6. Kiểm tra

    man ln
    

Điều này cũng hoạt động trong xterm.


để tránh mở nano, bạn có thể nối thêm bashrc từ terminal: sudo apt install most; tiếng vang "export PAGER = 'most'" >> ~ / .bashrc; nguồn ~ / .bashrc
Sẽ

1

Lấy từ http://nion.modprobe.de/blog/archives/569-colored-manpages.html

Trích đoạn:

$ mkdir ~/.terminfo/ && cd ~/.terminfo

Bây giờ hãy lấy phần terminfomô tả (lưu phần sau dưới dạng mostlike.txt):

# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor
mostlike|manpages with color looking like most, 
    am, hs, km, mir, msgr, xenl, 
    cols#80, it#8, lines#24, wsl#40, 
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 
    bel=^G, bold=\E[1m\E[31m, clear=\E[H\E[2J, cr=^M, 
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, 
    cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, 
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, 
    dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, 
    dsl=\E]0;\007, ed=\E[J, el=\E[K, enacs=\E)0, fsl=^G, 
    home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, 
    is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H, 
    kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 
    kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, 
    kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, 
    kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, 
    kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, 
    kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, 
    kfnd=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, 
    kslt=\E[4~, rc=\E8, rev=\E[7m\E[34m, ri=\EM, rmacs=^O, 
    rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, 
    rmso=\E[m, rmul=\E[m, 
    rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7, 
    sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, 
    smkx=\E[?1h\E=, smso=\E[1;30m\E[47m, smul=\E[32m, 
    tbc=\E[3g, tsl=\E]0;, u6=\E[%i%d;%dR, u7=\E[6n, 
    u8=\E[?1;2c, u9=\E[c, 

Bây giờ biên dịch nó bằng cách sử dụng tic(trình biên dịch mô tả mục terminfo):

$ tic mostlike.txt

(Bạn có thể muốn xóa mostlike.txttệp sau khi biên dịch.)

Và sau đó chỉ cần xác định một bí danh trong *rctệp shell yêu thích của bạn.

$ alias man="TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man"

Nếu bạn muốn sửa đổi tệp terminfo, hãy sử dụng infocmp mostlikeđể có được nội dung của nó sau này.


11
Nó giúp nếu bạn tóm tắt nguồn ở đây, vì vậy mọi người có thể thấy những gì nó nói mà không cần phải nhấp qua (và trong trường hợp trang web bị sập)
Michael Mrozek

3
Vui lòng cung cấp câu trả lời, không chỉ liên kết đến câu trả lời. Tuy nhiên, rất tốt để cung cấp các liên kết hỗ trợ câu trả lời của bạn. Hãy tưởng tượng tôi đã Googling cho câu hỏi này --- một câu trả lời hay tại StackExchange sẽ nhanh chóng tìm thấy nó đến trang kết quả đầu tiên.
Stefan Lasiewski

Liên kết đã chết.
farzan

Tìm thấy điều này mostlike.txttrực tuyến.
Kaushal Modi

Đầu ra trông như thế nào?
Tom Hale

1

Nhận câu trả lời của Dirtbit , tôi muốn thay đổi màu của kết quả tìm kiếm được tô sáng. Đây được gọi là "chế độ nổi bật", đây là một tệp ví dụ "xterm-yellow.ti":

xterm-yellow|yellow standout mode,
# exit standout mode
  rmso=\e[m,
# begin standout mode
  smso=\e[5;30;43m,
# similar terminal
  use=xterm,

Biên dịch và cài đặt tệp:

tic xterm-yellow.ti

Thêm dòng vào "~ / .profile" hoặc tương tự:

TERM=xterm-yellow
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.