Pertanyaan Apa arti warna yang berbeda dalam ls?


Apa perbedaan warna di Ubuntu ls perintah artinya? Misalnya, ketika saya mengetik ls perintah di salah satu folder saya, saya mendapatkan salah satu file berwarna hijau terang, yang lain (yang merupakan folder) berwarna biru dengan sorotan hijau.

Apa arti warna-warna itu, dan ada manual tentang semua warna?


298
2017-12-14 08:15


asal




Jawaban:


  • Biru: Direktori
  • hijau: File data yang dapat dieksekusi atau dikenali
  • Langit biru: File tautan simbolis
  • Kuning dengan latar belakang hitam: Perangkat
  • Berwarna merah muda: File gambar grafis
  • Merah: Berkas arsip
  • Merah dengan latar belakang hitam: Tautan rusak

Untuk informasi anda:

  • Untuk mematikan warna, Anda harus memberi komentar pada baris berikut di .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
    
  • Juga jika Anda ingin melihat makna warna bash Anda sendiri, lalu salin / tempel kode berikut di terminal Anda.

    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       
    } 
    

    Keluaran:
    alt text

catatan: 


306
2017-12-14 08:18



Bahwa eval skrip yang menunjukkan representasi warna output untuk setiap jenis brilian ... terima kasih! - Russ
Murni sourcery;) - Homunculus Reticulli
Versi yang lebih mudah dibaca dari itu eval skrip ada di sini: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
Merah juga merupakan symlink mati. - Thomas Ward♦
bagaimana dengan file dalam teks putih biasa? - S..


Anda bisa mengetahui warna apa ls menggunakan dengan melihat $LS_COLORS variabel:

  • Turquoise: file audio1
  • Merah Terang: Arsip dan file terkompresi2
  • Ungu: gambar dan video3

Selain itu, file diwarnai oleh atribut:

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, kebun binatang, 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, anx, ogv, ogx.


Semua informasi ini terkandung dalam output dircolors --print-database, tetapi formatnya agak tidak terbaca.

Berikut penjelasan teknis tentang apa yang terjadi:

Contoh:

CHR 40;33;01

Kode warna terdiri dari tiga bagian:

  • Bagian pertama sebelum titik koma mewakili gaya teks.

    • 00 = tidak ada, 01 = tebal, 04 = garis bawah, 05 = berkedip, 07 = mundur, 08 = tersembunyi.
  • Bagian kedua dan ketiga adalah warna dan warna latar belakang:

    • 30 = hitam, 31 = merah, 32 = hijau, 33 = kuning, 34 = biru, 35 = magenta, 36 = cyan, 37 = putih.

Setiap bagian dapat dihilangkan, dengan asumsi mulai dari kiri. yaitu "01" berarti huruf tebal, "01; 31" berarti tebal dan merah. Dan Anda akan mendapatkan terminal Anda untuk mencetak warna dengan melarikan diri instruksi dengan \33[ dan mengakhirinya dengan m. 33, atau 1B dalam heksadesimal, adalah tanda ASCII "ESCAPE" (karakter khusus dalam set karakter ASCII). Contoh:

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

Mencetak "Hello World" dalam warna merah terang.

Perintah ls dengan argumen itu --color=auto (di Ubuntu, ls adalah alias untuk ls --color=auto) melalui semua nama file dan mencoba pertama untuk mencocokkan berbagai jenis, seperti Executable, Pipe dan sebagainya. Kemudian mencoba untuk mencocokkan ekspresi reguler seperti * .wav dan mencetak nama file yang dihasilkan, diapit oleh petunjuk perubahan warna untuk bash.


86
2017-12-14 08:57



Terima kasih! Saya sedang melihat sebuah Visualisasi topologi Git  pertanyaan dan bertanya-tanya mengapa beberapa karakter sedang dicetak. - pdp


Jika Anda mengetik dircolors (echo $LS_COLORS juga berfungsi) dari baris perintah Anda akan mendapatkan daftar kode dan warna untuk banyak tipe file dalam 1 baris. dircolors --print-database menunjukkan mereka 1 baris sekaligus. Ini daftar singkat (saya mencoba memasukkan yang paling penting). Di bagian bawah ada penjelasan tentang apa kode yang berbeda di akhir setiap baris mewakili:

NORMAL 00 # global default, meskipun semuanya harus menjadi sesuatu.
FILE 00 # file normal
DIR 01; 34 # direktori
LINK 01; 36 # tautan simbolik. (Jika Anda menetapkan ini ke 'target', bukan a
 # nilai numerik, warnanya sama dengan file yang ditunjuk.)
FIFO 40; 33 # pipa
SOCK 01; 35 # soket
PINTU 01; 35 # pintu
BLK 40; 33; 01 # blok driver perangkat
Driver perangkat CHR 40; 33; 01 # karakter
ORPHAN 40; 31; 01 # symlink ke file tidak ada, atau file non-stat'able
SETUID 37; 41 # file yang disetuid (u + s)
SETGID 30; 43 # file yang setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir yang lengket dan dapat ditulis lainnya (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir yang dapat ditulis-lain (o + w) dan tidak lengket
STICKY 37; 44 # dir dengan set bit yang lengket (+ t) dan tidak dapat ditulis-lainnya
# arsip atau dikompresi (merah terang)
.tar 01; 31
.tgz 01; 31
# format gambar
.jpg 01; 35
.jpeg 01; 35
.gif 01; 35
.bmp 01; 35
# format audio
.aac 00; 36
.flac 00; 36
.ogg 00; 36
  • Kode atribut: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Kode warna teks: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Kode warna latar belakang: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Jika Anda ingin bermain-main dengan ini di sini adalah contoh tentang cara mengatur warna untuk file:

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

Ini akan diatur *.ogg dan .mp3 untuk bold magenta. Dan jika Anda memasukkannya ke dalam Anda .bashrc file itu akan menjadi permanen.


27
2017-09-14 08:25



Hei mungkin orang lain datang dengan jawaban yang lebih baik. Btw Anda membuat saya lebih dari 15k dengan upvote ini;) - Rinzwind
rock on! Anda mendapatkan diri Anda di sana ... Terima kasih sekali lagi, saya melakukan "string" untuk mencari beberapa warna yang tidak saya yakini - user784637
Jawaban (luar biasa) ini adalah digabung, jika Anda bertanya-tanya tentang tanggalnya. :-) - Stefano Palazzo♦
@Rinzwind, jadi untuk menetapkan warna pdf file, prosesnya digunakan export? Apakah mungkin untuk hanya menambahkan satu ekstensi di default LS_COLORS  variabel? - Sigur


Tak satu pun dari jawaban di sini termasuk 256 pilihan warna dalam versi terbaru Ubuntu. Saya kekurangan warna (beberapa warna memberi saya masalah satu sama lain) sehingga direktori biru default pada hitam sangat sulit untuk saya baca. Berikut ini adalah penelitian saya untuk mengubahnya.

Mengetik dircolors -p |less untuk melihat kode warna Anda saat ini.

Default .bashrc seharusnya sudah dikonfigurasi tidak hanya untuk mengambil keuntungan dari kode warna sistem, tetapi juga satu di ~ / .dircolors jadi buang output dircolors ke .dircolor sehingga Anda dapat mulai dengan yang menggunakan perintah ini. dircolors -p > ~/.dircolors

Alternatif: mengambil dircolors warna 256 yang sangat mirip dari Seebi terpecah proyek.

Pegang ini skrip paling seksi dan jalankan dengan perintah colortest -w jadi Anda bisa melihat semua warna sekaligus. Pilih warna. Saya suka jeruk # 208. Saya ingin itu menjadi warna teks sehingga menggunakan info ini pada kode warna yang diperpanjang, saya bisa menerapkannya.

Jadi Anda punya warna, sekarang apa. Pertama kita harus membuat string.

Nomor pertama akan menjadi kode atribut, kemungkinan besar 00, tetapi jika Anda ingin menghapusnya, lanjutkan dengan 05:

Pilih kode atribut: 00 = none 01 = bold 04 = garis bawah 05 = berkedip 07 = mundur 08 = tersembunyi

Selanjutnya pilih append ;38;5; ke kode atribut untuk menunjukkan warna teks Anda untuk mendapatkan 00; 38; 5; lalu tambahkan warna Anda. Saya memilih 208 jadi saya dapatkan 00;38;5;208.

Jika Anda ingin juga meletakkan latar belakang di atasnya, pilih warna lain (katakanlah 56) dengan skrip paling hebat dan append ;48;5;untuk latar belakang dan 56 untuk warna untuk mendapatkan total string 00;38;5;208;48;5;56.

Jadi sekarang Anda memilikinya, apa yang Anda lakukan dengannya?

vim ~/.dircolors dan temukan bagian yang ingin Anda ubah (untuk saya itu adalah DIR) ke string yang kami tentukan di atas "00; 38; 5; 208".

Ini tidak akan langsung berlaku, Anda harus memuat konfigurasi. Menggunakan dircolors ~/.dircolors untuk mendapatkan kode untuk mengatur variabel LS_COLORS Anda. Anda bisa menempelkannya ke sesi terminal Anda atau Anda dapat menutup terminal Anda dan membukanya kembali. Anda juga bisa menyalurkannya ke dalam file dan menjalankannya sebagai skrip shell.

Anda dapat melakukan prosedur yang sama ini dengan 16 warna. Anda tidak membutuhkan yang spesial; 38; 5 atau; 48; 5 barang. Buang saja angka ke dalam string dan nikmati kesederhanaannya.

Terimakasih untuk Dan dan seebi untuk catatan dan kode mereka tentang ini.


15
2018-03-22 20:45





Ini meluas Jawaban Karthick87.


Dengan pengaturan default

  • Tidak berwarna (putih): file atau teks non-nama file (misalnya izin dalam output dari ls -l)
  • Biru tebal: direktori
  • Bold cyan: tautan simbolis
  • Berani hijau: file yang dapat dieksekusi
  • Berani merah: berkas arsip
  • Magenta tebal: file gambar, video, grafik, dll. atau pintu atau stopkontak
  • Cyan: file audio
  • Kuning dengan latar belakang hitam: pipa (AKA FIFO)
  • Warna kuning pekat dengan latar belakang hitam: blok perangkat atau perangkat karakter
  • Warna merah jambu dengan latar belakang hitam: symlink orphan atau file yang hilang
  • Tidak berwarna dengan latar belakang merah: set-user-ID file
  • Hitam dengan latar belakang kuning: file set-group-ID
  • Hitam dengan latar belakang merah: file dengan kemampuan
  • Putih dengan latar belakang biru: direktori sticky
  • Biru dengan latar belakang hijau: direktori lain yang bisa ditulis
  • Hitam dengan latar belakang hijau: direktori yang lengket dan dapat ditulis lainnya

Skrip untuk menampilkan warna

#!/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

Output dengan pengaturan default:

gnome-terminal screenshot

Output dengan pengaturan saya (dircolors kustom dan tema terminal Solarized kustom):

gnome-terminal screenshot

Saya mendapat deskripsi dari dircolors -p dan man dir_colors, dan mengisi kekosongan dengan penelitian saya sendiri.

Warna dan deskripsi sama dari 14.04 ke 17.10.


14
2018-02-17 21:05



Bagaimana kamu tahu rs cara RESET, mh cara MULTIHARDLINK, ca cara CAPABILITY dll? - Fredrick Gauss
@FredrickGauss Seperti yang saya tulis dalam jawaban, saya mendapat deskripsi dari berjalan dircolors -p. - wjandrea
dircolors -p tidak berkata rs aku s RESET 0 # reset ke warna "normal" . - Fredrick Gauss
@FredrickGauss Tidak secara eksplisit, tetapi "RESET" adalah satu-satunya yang dapat disingkat sebagai "rs", dan warna (0) cocok. - wjandrea
Saya menanyakan itu. Anda hanya memperkirakan, menyimpulkan. - Fredrick Gauss