Bagaimana cara mewarnai file tersembunyi di daftar file `ls`?

10

LS_COLORSvariabel lingkungan memungkinkan Anda memutuskan warna untuk jenis file yang berbeda untuk lsperintah GNU coreutil , seperti direktori, file biasa, tautan dll. tidak ada opsi untuk menentukan warna tampilan untuk mereka.

Apakah ada cara (lain) yang dapat Anda lakukan untuk membuat lslisting menampilkan file tersembunyi dalam warna yang berbeda?

Johnny Baloney
sumber
Jawaban ini memiliki lebih dari yang ingin Anda ketahui LS_COLORS. Saya tidak tahu cara membuatnya berfungsi untuk dotfiles tetapi Anda mungkin ingin memeriksanya.
terdon
1
@terdon - tidak berfungsi untuk dotfiles. Mungkin bagi sebagian orang, tetapi sangat sedikit. Ada batas panjang ekstensi dan sebagian besar nama file keseluruhan akan melampauinya. Ini akan berfungsi untuk file bernama *.hidemisalnya. Jawaban ini membahas masalah yang sama untuk direktori, meskipun jawaban untuk ini dan masalah direktori mungkin tidak sama.
mikeserv

Jawaban:

1

Jika Anda hanya mengurutkan berdasarkan nama, ini mungkin membantu:

alias ll='LS_COLORS=$LS_COLORS:"di=0;34:" ; S_COLORS=$LS_COLORS:"fi=0;37:" ; export LS_COLORS; ls -dHhl --color=auto .*; LS_COLORS=$LS_COLORS:"di=1;94:" ; LS_COLORS=$LS_COLORS:"fi=1;37:" ; export LS_COLORS$

Namun, ia membagi perintah ls menjadi dua bagian, satu untuk file dan folder tersembunyi, satu untuk sisanya.

bodoh
sumber
0

Ya, gunakan cf. Saya baru saja merilis versi yang terdokumentasi dengan baik, ini secara khusus mewarnai keluaran per ekstensi file dan / atau atribut khusus tertentu (dapat dieksekusi, tautan, tersembunyi, dan direktori). Cobalah !!! Sulit untuk melepaskan dari menggunakan ini setelah Anda terbiasa.

https://github.com/AdamDanischewski/cf

A.Danischewski
sumber
-1

Jika Anda hanya ingin menyorot file tersembunyi (dan folder) dan Anda tidak peduli dengan pewarnaan semua file lainnya, maka pendekatan yang jelas adalah menjalankan ls -la | grep -E "^| \.[^/|'.].*"

Jika Anda ingin mempertahankan warna lain, maka segala sesuatunya mulai menjadi rumit, karena $LS_COLORStidak mendukung pewarnaan file tersembunyi seperti yang terlihat.

Saya datang dengan ide untuk secara dinamis menambahkan file tersembunyi direktori saat ini ke $LS_COLORSvariabel lingkungan sebagai ekstensi semu, kemudian jalankan ls -ladan setelah itu jalankan dircolorsuntuk mengatur ulang skema warna asli. Jelas akan ada konflik jika file tersembunyi memiliki nama yang sama dengan ekstensi yang dikenal. Metode ini juga tidak berfungsi dengan folder tersembunyi.

Peringatan: Solusi ini adalah retas (yang tidak sepenuhnya diuji). Gunakan dengan risiko Anda sendiri.

for h in $(ls -A | grep "^\."); do LS_COLORS="$LS_COLORS*$h=04;05:"; done; ls -la; eval $(dircolors)

Michael Osl
sumber