Створіть у каталозі наступні файли.
$ touch .a .b a b A B 你好嗎
Моє ls
замовлення за замовчуванням ігнорує наявність провідних точок, переплітаючи їх з іншими файлами.
$ 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 你好嗎
Я можу змінитись, LC_COLLATE
щоб поставити точкові файли першими.
$ 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 你好嗎
На жаль , це робить порядок сортування чутливий до регістру, тобто A
і B
передують a
і b
. Чи є спосіб надрукувати спочатку точкові файли, залишаючись нечутливими до регістру ( A
та a
передуючи B
і b
)?
Редагувати: спроба змінити LC_COLLATE
Жоден з відповідей поки що повністю не повторює функціональність ls
легко. Можливо, я міг би включити деякі з них у функцію, але це повинно включати детальний код про (наприклад), як працювати без аргументу проти надання каталогу в якості аргументу. Або як поводитися з явним -d
прапором.
Як альтернатива, я подумав, що, можливо, там можна краще LC_COLLATE
скористатися. Однак я не можу зробити так, щоб це працювало. Я зараз використовую LC_COLLATE="en_AU.UTF-8"
. Я перевірив /usr/share/i18n/locales/en_AU
(хоча я не впевнений, що це правильний файл, тому що я не бачу жодної посилання на UTF-8
); Я знайшов таке.
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1
містить copy "iso14651_t1_common"
. Нарешті, /usr/share/i18n/locales/iso14651_t1_common
містить
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Я видалив цей рядок, запустив sudo locale-gen
і перезапустив комп’ютер. На жаль, це нічого не змінило.