Creare i seguenti file in una directory.
$ touch .a .b a b A B 你好嗎
Il mio ls
ordine predefinito ignora la presenza di punti iniziali, mescolandoli con gli altri file.
$ ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
Io posso cambiare LC_COLLATE
per mettere al primo posto i dotfile.
$ LC_COLLATE=C ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
Sfortunatamente, questo fa distinzione tra maiuscole e minuscole, vale a dire A
e B
precedono a
e b
. C'è un modo per stampare prima i dotfile rimanendo senza distinzione tra maiuscole e minuscole ( A
e a
precedendo B
e b
)?
Modifica: tentativo di modificare LC_COLLATE
Nessuna delle risposte finora replica completamente la funzionalità di ls
facilmente. Concepibilmente, potrei racchiuderne alcuni in una funzione, ma questo dovrebbe includere un codice dettagliato su (ad esempio) come lavorare senza argomenti vs. fornire una directory come argomento. O come gestire una -d
bandiera esplicita .
In alternativa, ho pensato che forse potrebbe esserci un migliore LC_COLLATE
da usare. Tuttavia, non riesco a farlo funzionare. Attualmente sto usando LC_COLLATE="en_AU.UTF-8"
. Ho controllato /usr/share/i18n/locales/en_AU
(anche se non sono sicuro che questo sia il file giusto, in quanto non riesco a vedere alcun riferimento a UTF-8
); Ho trovato quanto segue.
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1
contiene copy "iso14651_t1_common"
. Infine, /usr/share/i18n/locales/iso14651_t1_common
contiene
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Ho cancellato questa riga, eseguito sudo locale-gen
e riavviato il mio computer. Sfortunatamente, questo non ha cambiato nulla.