Những màu sắc khác nhau có ý nghĩa gì trong ls?


364

Các màu khác nhau trong lslệnh của Ubuntu có nghĩa là gì? Ví dụ, khi tôi gõ lslệnh vào một trong các thư mục của mình, tôi nhận được một trong các tệp có màu xanh nhạt, còn lại (là thư mục) có màu xanh lam với màu xanh lục nổi bật.

Những màu đó có nghĩa là gì, và có hướng dẫn nào về tất cả các màu không?

Câu trả lời:


391
  • Màu xanh : Thư mục
  • Màu xanh lá cây : Tệp dữ liệu có thể thực thi hoặc được công nhận
  • Sky Blue : tập tin liên kết tượng trưng
  • Màu vàng với nền đen : Thiết bị
  • Pink : tập tin hình ảnh đồ họa
  • Đỏ : Lưu trữ tệp
  • Màu đỏ với nền đen : Liên kết bị hỏng

Để biết thông tin của bạn:

  • Để tắt màu, bạn phải nhận xét các dòng sau .bashrc.

    # enable color support of ls and also add handy aliases
    #if [ -x /usr/bin/dircolors ]; then
    #    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    #    alias ls='ls --color=auto'
    #    #alias dir='dir --color=auto'
    #    #alias vdir='vdir --color=auto'
    #
    #    alias grep='grep --color=auto'
    #    alias fgrep='fgrep --color=auto'
    #    alias egrep='egrep --color=auto'
    #fi
    
  • Ngoài ra nếu bạn muốn xem ý nghĩa màu bash của riêng bạn, sau đó sao chép / dán các mã sau vào thiết bị đầu cuối của bạn.

    eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           
    {      
      IFS=:     
      for i in $LS_COLORS     
      do        
        echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" 
      done       
    } 

    Đầu ra:
    văn bản thay thế

Ghi chú:

  • Để biết thêm thông tin loại man dir_colorstrong thiết bị đầu cuối.

28
Đó là evalkịch bản hiển thị màu đại diện đầu ra cho từng loại là rực rỡ ... cảm ơn!
Nga


5
Một phiên bản dễ đọc hơn của evaltập lệnh đó có ở đây: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
Gautam

3
Màu đỏ cũng là một liên kết chết.
Thomas Ward

1
Những gì về các tập tin trong văn bản trắng bình thường?
S ..

98

Bạn có thể tìm ra màu sắc lssử dụng bằng cách nhìn vào $LS_COLORSbiến:

  • Màu ngọc lam: tệp âm thanh 1
  • Màu đỏ tươi: Lưu trữ và tệp nén 2
  • Màu tím: hình ảnh và video 3

Ngoài ra, các tệp được tô màu bởi các thuộc tính:

văn bản thay thế


  1. aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. tar, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, ace sở thú, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng, pcx, Mov, mpg, mpeg, m2v, mkv, ogm, mp4 mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, lo lắng, ogv, ogx.


Tất cả thông tin này được chứa trong đầu ra của dircolors --print-database, nhưng định dạng của nó khá khó đọc.

Đây là một lời giải thích kỹ thuật về những gì đang xảy ra:

Thí dụ:

CHR 40;33;01

Mã màu bao gồm ba phần:

  • Phần đầu tiên trước dấu chấm phẩy thể hiện phong cách văn bản.

    • 00 = none, 01 = bold, 04 = gạch dưới, 05 = nhấp nháy, 07 = đảo ngược, 08 = che giấu.
  • Phần thứ hai và thứ ba là màu và màu nền:

    • 30 = đen, 31 = đỏ, 32 = xanh, 33 = vàng, 34 = xanh, 35 = đỏ tươi, 36 = lục lam, 37 = trắng.

Mỗi phần có thể được bỏ qua, giả sử bắt đầu từ bên trái. tức là "01" có nghĩa là đậm, "01; 31" có nghĩa là đậm và đỏ. Và bạn sẽ làm cho thiết bị đầu cuối của bạn in màu bằng cách thoát khỏi hướng dẫn bằng \33[và kết thúc nó bằng một m. 33, hoặc 1B theo hệ thập lục phân, là ký hiệu ASCII "ESCAPE" (một ký tự đặc biệt trong bộ ký tự ASCII). Thí dụ:

"\33[1;31mHello World\33[m"

In "Hello World" màu đỏ tươi.

Lệnh lsvới đối số --color=auto(trên Ubuntu, lslà bí danh cho ls --color=auto) đi qua tất cả các tên tệp và trước tiên thử khớp với các loại khác nhau, như Executable, Tube, v.v. Sau đó, nó cố gắng khớp các biểu thức thông thường như * .wav và in tên tệp kết quả, kèm theo các hướng dẫn thay đổi màu này cho bash.


Cảm ơn! Tôi đã xem xét một câu hỏi trực quan hóa cấu trúc liên kết Git và tự hỏi tại sao một số nhân vật được in.
pdp

27

Nếu bạn nhập dircolors( echo $LS_COLORScũng hoạt động) từ dòng lệnh, bạn sẽ nhận được một danh sách mã và màu sắc cho rất nhiều kiểu tệp trong 1 dòng. dircolors --print-databasecho họ thấy 1 dòng tại một thời điểm Đây là một danh sách ngắn (tôi đã cố gắng đưa vào những cái quan trọng nhất). Ở phía dưới có một lời giải thích về những gì các mã khác nhau ở cuối mỗi dòng đại diện:

BÌNH THƯỜNG 00 # mặc định toàn cầu, mặc dù mọi thứ nên là một cái gì đó.
TẬP 00 # tập tin bình thường
TRỰC TIẾP 01; 34 # thư mục
LIÊN KẾT 01; 36 # liên kết tượng trưng. (Nếu bạn đặt mục tiêu này thành 'mục tiêu' thay vì
 # giá trị số, màu sắc như đối với tệp được trỏ đến.)
Ống hàng năm 40; 33 #
SOCK 01; ổ cắm 35 #
CỬA 01; 35 # cửa
Trình điều khiển thiết bị khối BLK 40; 33; 01 #
Trình điều khiển thiết bị CHR 40; 33; 01 #
ORPHAN 40; 31; 01 # symlink đến tệp không tồn tại hoặc tệp không thể thống kê
SETUID 37; 41 # tệp được setuid (u + s)
SETGID 30; 43 # tệp được setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir dính và có thể ghi khác (+ t, o + w)
KHÁC_WRITABLE 34; 42 # dir có thể ghi khác (o + w) và không dính
STICKY 37; 44 # dir với tập bit dính (+ t) và không thể ghi khác
# lưu trữ hoặc nén (màu đỏ tươi)
.tar 01; 31
.tgz 01; 31
# định dạng hình ảnh
.jpg 01; 35
.jpeg 01; 35
.gif 01; 35
.bmp 01; 35
# định dạng âm thanh
.aac 00; 36
.flac 00; 36
.ogg 00; 36
  • Mã thuộc tính: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Mã màu văn bản: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Mã màu nền: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Nếu bạn muốn giải quyết vấn đề này thì đây là một ví dụ về cách đặt màu cho tệp:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

Điều này sẽ thiết lập *.ogg.mp3để bold magenta. Và nếu bạn đặt nó trong .bashrctập tin của bạn, nó sẽ trở thành vĩnh viễn.


2
Hey có thể người khác đi kèm với một câu trả lời tốt hơn. Btw bạn đã cho tôi hơn 15k với upvote này;)
Rinzwind

đá vào! Bạn đã tự mình đến đó ... Cảm ơn một lần nữa, tôi đã thực hiện / "chuỗi" để tìm kiếm một số màu mà tôi không chắc chắn về
user784637

Câu trả lời (xuất sắc) này đã được hợp nhất , trong trường hợp bạn đang tự hỏi về ngày. :-)
Stefano Palazzo

@Rinzwind, vậy để thiết lập màu cho pdftập tin, quy trình là sử dụng export? Có thể chỉ cần thêm một phần mở rộng trong LS_COLORS biến mặc định ?
Sigur

23

Điều này mở rộng dựa trên câu trả lời của Karthick87 .


Với thiết lập mặc định

  • Uncolored (màu trắng) : tệp hoặc văn bản không tên tệp (ví dụ: quyền trong đầu ra của ls -l)
  • Màu xanh đậm : thư mục
  • Màu lục lam đậm : liên kết tượng trưng
  • Bold green : tập tin thực thi
  • In đậm : tập tin lưu trữ
  • Bold magenta : tập tin hình ảnh, video, đồ họa, vv hoặc cửa hoặc ổ cắm
  • Cyan : tập tin âm thanh
  • Màu vàng với nền đen : ống (AKA FIFO)
  • Màu vàng đậm với nền đen : thiết bị khối hoặc thiết bị ký tự
  • Màu đỏ đậm với nền đen : symlink mồ côi hoặc tập tin bị thiếu
  • Không tô màu với nền đỏ : tệp set-user-ID
  • Màu đen với nền màu vàng : tập tin ID nhóm-nhóm
  • Đen với nền đỏ : tập tin có khả năng
  • Trắng với nền xanh : thư mục dính
  • Màu xanh với nền màu xanh lá cây : thư mục khác có thể ghi
  • Màu đen với nền màu xanh lá cây : thư mục dính và có thể ghi khác

Kịch bản để hiển thị màu sắc

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add descriptions for named types.
    case "$type" in
    bd) type+=" (block device)" ;;
    ca) type+=" (file with capability)" ;;
    cd) type+=" (character device)" ;;
    di) type+=" (directory)" ;;
    do) type+=" (door)" ;;
    ex) type+=" (executable file)" ;;
    fi) type+=" (regular file)" ;;
    ln) type+=" (symbolic link)" ;;
    mh) type+=" (multi-hardlink)" ;;
    mi) type+=" (missing file)" ;;
    no) type+=" (normal non-filename text)" ;;
    or) type+=" (orphan symlink)" ;;
    ow) type+=" (other-writable directory)" ;;
    pi) type+=" (named pipe, AKA FIFO)" ;;
    rs) type+=" (reset to no color)" ;;
    sg) type+=" (set-group-ID)" ;;
    so) type+=" (socket)" ;;
    st) type+=" (sticky directory)" ;;
    su) type+=" (set-user-ID)" ;;
    tw) type+=" (sticky and other-writable directory)" ;;
    esac

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != $color_prev ]]; then
        echo
    fi

    printf "\e[%sm%s\e[m " "$color" "$type"

    # For next loop
    color_prev="$color"
done
echo

Đầu ra với thiết lập mặc định:

ảnh chụp màn hình gnome-terminal

Đầu ra với thiết lập của tôi (dircolors tùy chỉnh và chủ đề thiết bị đầu cuối Solarized tùy chỉnh):

ảnh chụp màn hình gnome-terminal

Tôi đã nhận được các mô tả từ dircolors -pman dir_colors, và điền vào các khoảng trống với nghiên cứu của riêng tôi.

Màu sắc và mô tả giống nhau từ 14.04 đến 17.10.


Làm thế nào bạn biết rsphương tiện RESET, mhphương tiện MULTIHARDLINK, caphương tiện CAPABILITYvv?
Fredrick Gauss

@FredrickGauss Khi tôi viết trong câu trả lời, tôi đã nhận được mô tả từ việc chạy dircolors -p.
wjandrea

dircolors -pkhông nói rsRESET 0 # reset thành màu "bình thường" .
Fredrick Gauss

@FredrickGauss Không rõ ràng, nhưng "RESET" là từ duy nhất có thể được viết tắt là "rs" và màu (0) khớp.
wjandrea

18

Không có câu trả lời nào ở đây bao gồm 256 tùy chọn màu trong các phiên bản mới nhất của Ubuntu. Tôi bị thiếu màu (một số màu gây rắc rối cho tôi gần nhau) vì vậy thư mục màu xanh mặc định trên màu đen rất khó đọc đối với tôi. Điều gì sau đây là nghiên cứu của tôi để thay đổi điều đó.

Nhập dircolors -p |lessđể xem mã màu hiện tại của bạn.

.Bashrc mặc định đã được cấu hình không chỉ để tận dụng mã màu của hệ thống, mà còn là một trong ~ / .dircolors để kết xuất đầu ra dircolors thành .dircolor để bạn có thể bắt đầu bằng lệnh này. dircolors -p > ~/.dircolors

Thay thế: chọn một màu tương tự 256 màu từ dự án năng lượng mặt trời của seebi .

Lấy tập lệnh colortest này và chạy nó bằng lệnh colortest -wđể bạn có thể thấy tất cả các màu cùng một lúc. Chọn một màu. Tôi thích màu cam # 208. Tôi muốn đó là màu văn bản để sử dụng thông tin này trên các mã màu mở rộng, tôi có thể áp dụng điều đó.

Vì vậy, bạn có một màu sắc, bây giờ những gì. Đầu tiên chúng ta phải tạo chuỗi.

Số đầu tiên sẽ là mã thuộc tính, rất có thể là 00, nhưng nếu bạn muốn nó nhấp nháy, hãy đi với 05:

Chọn mã thuộc tính: 00 = none 01 = bold 04 = gạch dưới 05 = nhấp nháy 07 = đảo ngược 08 = che giấu

Tiếp theo chọn nối ;38;5;vào mã thuộc tính đó để chỉ ra màu văn bản của bạn để nhận 00; 38; 5; và sau đó nối màu của bạn. Tôi chọn 208 vì vậy tôi nhận được 00;38;5;208.

Nếu bạn cũng muốn đặt một nền trên đó, hãy chọn một màu khác (giả sử là 56) với tập lệnh colortest và nối thêm ;48;5;cho nền và 56 cho màu để có tổng chuỗi 00;38;5;208;48;5;56.

Vì vậy, bây giờ bạn có nó, bạn làm gì với nó?

vim ~/.dircolors và tìm phần bạn muốn thay đổi (đối với tôi là TRỰC TIẾP) thành chuỗi chúng tôi đã xác định ở trên "00; 38; 5; 208".

Điều này sẽ không áp dụng ngay lập tức, bạn sẽ cần phải tải cấu hình. Sử dụng dircolors ~/.dircolorsmã get để đặt biến LS_COLORS của bạn. Bạn chỉ có thể dán nó vào phiên thiết bị đầu cuối của bạn hoặc bạn có thể đóng thiết bị đầu cuối của bạn và mở lại nó. Bạn cũng có thể chuyển nó thành một tập tin và chạy nó dưới dạng tập lệnh shell.

Bạn có thể làm thủ tục tương tự với 16 màu. Bạn không cần những thứ đặc biệt; 38; 5 hoặc 48; 5. Chỉ cần ném các số vào chuỗi và tận hưởng sự đơn giản.

Cảm ơn Danseebi cho các ghi chú và mã của họ về điều này.


vui lòng kiểm tra xem 256 màu sẽ chỉ hoạt động trong các thiết bị đầu cuối tương thích xterm . Vì vậy, 256 màu không hoạt động với tôi với Konsole mà hoạt động với xtermrxvt-unicode .
DK Bose

1
Konsole làm việc riêng của mình. Kiểm tra draculatheme.com/konsole hoặc techoverflow.net/2013/11/08/installing-konsole-solarized-theme để có một bảng màu đẹp.
flickerfly
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.