Câu hỏi Các màu khác nhau có ý nghĩa gì trong ls?


Những màu sắc khác nhau trong Ubuntu ls lệnh có nghĩa là gì? Ví dụ: khi tôi nhập ls lệnh trong một trong các thư mục của tôi, tôi nhận được một trong các tập tin trong ánh sáng màu xanh lá cây, khác (đó là một thư mục) màu xanh lam với màu xanh lá cây làm nổi bật.

Những màu đó có ý nghĩa gì, và có bất kỳ hướng dẫn nào về tất cả các màu sắc?


299
2017-12-14 08:15


gốc




Các câu trả lời:


  • Màu xanh da trời: Danh mục
  • màu xanh lá: Tệp dữ liệu thực thi hoặc được nhận dạng
  • Trời xanh: Tệp liên kết tượng trưng
  • Màu vàng với nền đen: Thiết bị
  • Hồng: Tệp hình ảnh đồ họa
  • Màu đỏ: Lưu trữ tệp
  • Màu đỏ với nền đen: Liên kết bị hỏng

Đối với thông tin của bạn:

  • Để tắt màu, bạn phải nhận xét các dòng sau trong .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 sắc bash của riêng bạn, sau đó sao chép / dán các mã sau trong 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:
    alt text

Chú thích: 


307
2017-12-14 08:18



Cái đó eval kịch bản hiển thị màu đại diện đầu ra cho mỗi loại là rực rỡ ... cảm ơn! - Russ
Tinh khiết chua;) - Homunculus Reticulli
Một phiên bản dễ đọc hơn về điều đó eval kịch bản là ở đây: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
Màu đỏ cũng là một liên kết tượng trưng đã chết. - Thomas Ward♦
những gì về các tập tin trong văn bản màu trắng bình thường? - S..


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

  • Turquoise: tệp âm thanh1
  • Màu đỏ tươi: Các tệp nén và lưu trữ2
  • Màu tím: hình ảnh và video3

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

alt text


  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, m4v, 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-databasenhưng định dạng của nó không thể đọc được.

Dưới đây là 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 đại diện cho kiểu văn bản.

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

    • 30 = đen, 31 = đỏ, 32 = xanh lục, 33 = vàng, 34 = xanh dương, 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. nghĩa là "01" có nghĩa là in đậm, "01; 31" có nghĩa là in đậm và đỏ. Và bạn sẽ nhận được thiết bị đầu cuối của mình để in màu bằng cách thoát lệnh với \33[ và kết thúc bằng một m. 33, hoặc 1B trong 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" bằng màu đỏ tươi.

Lệnh ls với đối số --color=auto (trên Ubuntu, ls là bí danh cho ls --color=auto) đi qua tất cả các tên tập tin và cố gắng đầu tiên để phù hợp với các loại khác nhau, như thực thi, ống và như vậy. Sau đó nó cố gắng kết hợp các cụm từ thông dụng như * .wav và in tên tệp kết quả, được đính kèm trong các hướng dẫn thay đổi màu này cho bash.


86
2017-12-14 08:57



Cảm ơn! Tôi đã nhìn vào một Git visualization visualization  câu hỏi và tự hỏi tại sao một số nhân vật được in ra. - pdp


Nếu bạn nhập dircolors (echo $LS_COLORS cũng hoạt động) từ dòng lệnh, bạn sẽ nhận được một danh sách các mã và màu sắc cho rất nhiều loại tập tin trong 1 dòng. dircolors --print-database hiển thị cho họ 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 danh sách quan trọng nhất). Ở phía dưới có một giải thích về những gì các mã khác nhau ở cuối mỗi dòng đại diện cho:

NORMAL 00 # mặc định toàn cầu, mặc dù mọi thứ phải là thứ gì đó.
FILE 00 # tệp bình thường
DIR 01; 34 # thư mục
LINK 01; 36 # liên kết tượng trưng. (Nếu bạn đặt cài đặt này thành 'mục tiêu' thay vì
 # giá trị số, màu giống như đối với tệp được trỏ tới.)
FIFO 40, 33 # ống
SOCK 01; 35 # ổ cắm
CỬA 01, 35 # cửa
Trình điều khiển thiết bị khối BLK 40; 33; 01 # khối
CHR 40; 33; trình điều khiển thiết bị 01 # ký tự
ORPHAN 40; 31; 01 # liên kết tượng trưng đến tệp không tồn tại hoặc tệp không phải là stat
SETUID 37; 41 # tệp được setuid (u + s)
SETGID 30; 43 # tệp được setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir có độ dính và có thể ghi khác (+ t, o + w)
OTHER_WRITABLE 34, 42 # dir có thể ghi khác (o + w) và không dính
STICKY 37; 44 # dir với bộ bit dính (+ t) và không được ghi khác
# lưu trữ hoặc đượ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 chơi xung quanh với điều này ở đây là một ví dụ về cách thiết lập một màu cho một tập tin:

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

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


27
2017-09-14 08:25



Hey có lẽ ai đó đ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
rock on! Bạn đã có chính mình ở đó ... Cảm ơn một lần nữa mặc dù, tôi đã làm một / "chuỗi" để tìm kiếm trên một số màu sắc tôi đã không chắc chắn về - user784637
Câu trả lời (tuyệt vời) này là sáp nhập, trong trường hợp bạn đang tự hỏi về ngày tháng. :-) - Stefano Palazzo♦
@Rinzwind, để đặt màu cho pdf tập tin, quá trình này là để sử dụng export? Có thể chỉ cần thêm một tiện ích mở rộng trong mặc định LS_COLORS  biến? - Sigur


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

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

Mặc định .bashrc nên đã đượ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 cách sử dụng lệnh này. dircolors -p > ~/.dircolors

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

Lấy cái này tập lệnh colortest và chạy nó với lệnh colortest -w để bạn có thể xem 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 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 = underscore 05 = blink 07 = reverse 08 = concealed

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

Nếu bạn cũng muốn đặt nền trên đó, hãy chọn một màu khác (giả sử 56) bằng tập lệnh colortest và thêm ;48;5;cho nền và 56 cho màu sắc để có được một chuỗi tổng 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 (cho tôi là DIR) thành chuỗi mà 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 ~/.dircolors để nhận mã để đặt biến LS_COLORS của bạn. Bạn có thể chỉ cần dán nó vào phiên cuối của bạn hoặc bạn có thể đóng terminal của bạn và mở lại nó. Bạn cũng có thể đường ống đó vào một tập tin và chạy nó như là một kịch bản shell.

Bạn có thể thực hiện quy trình tương tự này với 16 màu. Bạn không cần đặc biệt, 38, 5 hoặc; 48; 5 thứ. Chỉ cần quăng những con số vào chuỗi và tận hưởng sự đơn giản.

Nhờ vào Dan và seebi cho ghi chú và mã của họ về điều này.


15
2018-03-22 20:45





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


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

  • Chưa được nhuộm màu (màu trắng): tập tin hoặc là văn bản không phải tên tệp (ví dụ: quyền trong đầu ra của ls -l)
  • Màu xanh đậm: danh mục
  • Màu lục lam đậm: liên kết tượng trưng
  • Màu xanh đậm: tệp thi hành
  • Đỏ đậm: tệp lưu trữ
  • Đỏ tía đậm: tệp hình ảnh, video, hình ảnh, v.v. hoặc là cửa hoặc là ổ 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: khối thiết bị hoặc là thiết bị ký tự
  • Màu đỏ đậm với nền đen: liên kết biểu tượng mồ côi hoặc là tệp tin thất lạc
  • Uncolored với nền màu đỏ: tập tin ID người dùng
  • Màu đen với nền màu vàng: tập tin ID nhóm
  • Đen với nền đỏ: tệp có khả năng
  • Trắng với nền màu xanh: thư mục dính
  • Màu xanh lam với nền màu xanh lục: thư mục có thể ghi khác
  • Màu đen với nền màu xanh lá cây: thư mục dính và ghi khác

Tập lệnh 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:

gnome-terminal screenshot

Đầu ra với thiết lập của tôi (tùy chỉnh dircolors và tùy chỉnh Solarized terminal theme):

gnome-terminal screenshot

Tôi có các mô tả từ dircolors -p và man dir_colorsvà lấp đầy 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.


14
2018-02-17 21:05



Làm sao bạn biết rs có nghĩa RESET, mh có nghĩa MULTIHARDLINK, ca có nghĩa CAPABILITY v.v. - Fredrick Gauss
@ FredrickGauss Như tôi đã viết trong câu trả lời, tôi đã nhận được mô tả từ chạy dircolors -p. - wjandrea
dircolors -p không nói rs Là RESET 0 # đặt lại thành màu "bình thường" . - Fredrick Gauss
@FredrickGauss Không rõ ràng, nhưng "RESET" là người duy nhất có thể được viết tắt là "rs", và màu sắc (0) phù hợp. - wjandrea
Tôi hỏi điều đó. Bạn chỉ ước tính, suy luận. - Fredrick Gauss