Створіть у каталозі наступні файли.
$ 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і перезапустив комп’ютер. На жаль, це нічого не змінило.