Di suatu tempat di sepanjang jalan saya mengacaukan perintah ls saya dan sekarang saya mendapatkan pemesanan ini ketika berjalan
$ ls -AhHl --color=auto
-rwxr-xr-x 1 clang clang 640 Mar 1 02:46 apple-touch-icon-precomposed.png
-rwxr-xr-x 1 clang clang 784 Jul 12 02:54 crossdomain.xml
-rwxr-xr-x 1 clang clang 1.2K Mar 1 02:46 favicon.ico
drwxr-xr-x 8 clang clang 4.0K Jul 12 23:50 .git
-rw-r--r-- 1 clang clang 17 Feb 29 19:48 .gitignore
-rwxr-xr-x 1 clang clang 1.4K Jul 12 02:54 humans.txt
Apa yang saya lakukan yang membuat saya mengabaikan dotfiles dan memesan dengan huruf pertama?
Output dari locale
:
$ locale
LANG=
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
ls
bahasa asing (mis. Jepang) unicode nama file sebagai????????
export LC_ALL="C"
dotfile Anda, Anda akan kehilangan dukungan untuk lokal Anda yang sebenarnya di semua utilitas yang sadar-lokal. Sementara masalah pencetakan yang ditunjukkan oleh @ohho dapat diatasi dengan jawaban Faroul , Anda akan memperkenalkan masalah penyortiran : penyortiran akan terjadi hanya dengan nilai byte, menghasilkan penyortiran yang (a) tidak terduga case-sensitive , dan (b) selalu tempat aksen chars. setelah semua yang tidak beraksen.Untuk menghindari perubahan sistem yang luas tanpa kebutuhan nyata, seseorang hanya dapat mengubah cara
ls
kerjanya bagi pengguna saat ini dengan menambahkan alias ke.bashrc
:Ini mengurutkan file dot terlebih dahulu, memungkinkan untuk menangani dengan benar (menampilkan dan mengurutkan) set karakter "tidak umum" seperti huruf kecil. Satu-satunya pelakunya adalah penyortiran akan case-sensitive.
Sumber: http://ubuntuforums.org/showthread.php?t=816753
sumber
LC_ALL
sudah disetel ke sesuatu yang tidak kompatibel dengan pengurutan / pengangkat dotfiles ke bagian atasls
daftar, gunakanalias ll='LC_ALL=C ls -alF'
sebaliknya, karenaLC_COLLATE
tidak menimpaLC_ALL
.Pengaturan
berfungsi dengan baik untuk saya - umlauts dan "ls -la" mendaftar dot-file terlebih dahulu.
sumber
UTF-8
- tidak akan diurutkan dengan benar.C.UTF-8
adalah lokal yang tidak valid, jadi lokal kembali keC
. Anda masih kehilangan dukungan UTF-8. Bahkan, ini lebih buruk karenaLC_ALL=C
sebagian besar program menampilkan sebagian besar karakter multibyte dengan benar , tetapi denganLC_ALL=something_invalid
beberapa program tidak (seperti `ls).locale
tampaknya kesalahan denganLC_ALL=C.UTF-8
: gist.github.com/Carpetsmoker/ef09b3734b29372939f97107413d7733 - yang ada di Arch Linux.Daftar manual ls (1):
Ini tampaknya mengubah cara periode diurutkan dan melakukan dotfil grup terlebih dahulu. Saya sudah:
di ~ / .bashrc saya.
sumber
Gagasan dinding
Saya sangat suka menggunakan metode penyortiran yang berbeda dengan
ls
, terutama-rt
(yang disortir dengan imer
dimodifikasit
terbalik). Jadi, saya memutuskan untuk mencoba sesuatu yang gila dan menggunakan awk untuk melakukan penyortiran saya.Sekarang alih-alih mendefinisikan alias bash, saya mendefinisikan fungsi bash (karena alias hanya dapat menambahkan argumen di bagian akhir, tetapi fungsi dapat menggunakannya di mana saja)
Untuk melihat hasilnya
Mari kita membuat beberapa file sampel:
Menggunakan ls
Menggunakan fungsi saya yang memfilter dengan awk
Anda dapat melihat implementasi saya di sini di sini https://github.com/RichardBronosky/dotfiles/commit/6170c0a9
Apa yang paling penting tentang ini adalah bahwa itu adalah kerangka kerja untuk mengutak-atik
ls
output Anda . Anda dapat melakukan apa pun yang Anda inginkan dengan filter awk itu. Anda mungkin ingin itu menjadi direktori, lalu dotfile, lalu yang lainnya. Setelah Anda tahu cara menangani warna xterm Anda, itu tidak terlalu sulit. Ini sepenuhnya terserah Anda.sumber
Mungkin coba ini di file .bashrc atau / etc / bashrc Anda:
Ini mengasumsikan Anda menjalankan versi ls yang agak baru yang menggunakan "--group-directories-first" sebagai opsi. Anda jelas dapat mengubah opsi LS sesuai keinginan Anda.
sumber
--group-directories-first
harus dilakukan dengan “tunjukkan dotfiles terlebih dahulu”?