Creare i seguenti file in una directory.
$ touch .a .b a b A B 你好嗎
Il mio lsordine 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 Ae Bprecedono ae b. C'è un modo per stampare prima i dotfile rimanendo senza distinzione tra maiuscole e minuscole ( Ae aprecedendo Be b)?
Modifica: tentativo di modificare LC_COLLATE
Nessuna delle risposte finora replica completamente la funzionalità di lsfacilmente. 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 -dbandiera esplicita .
In alternativa, ho pensato che forse potrebbe esserci un migliore LC_COLLATEda 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_t1contiene copy "iso14651_t1_common". Infine, /usr/share/i18n/locales/iso14651_t1_commoncontiene
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Ho cancellato questa riga, eseguito sudo locale-gene riavviato il mio computer. Sfortunatamente, questo non ha cambiato nulla.