Почему каталоги со списком сценариев начинаются с заглавных букв сначала, а строчных - потом?

Поток является расширением: Каталоги базовых скриптов ([: Discover: неожиданный оператор)

Когда я выполняю скрипт:

for item in *
do
   if [ -d "$item" ]
   then
      echo "$item"
   fi
done

It перечисляет папки, которые были автоматически собраны во время установки системы (Рабочий стол, Документы, Загрузки) или автоматической установки приложений (Dropbox), а затем моей (dosgames), вместо того, чтобы расположить их все вместе в алфавитном порядке (Рабочий стол, Документы, dosgames, Загрузки, Dropbox).

Почему он запускает две отдельные проверки, если проверяет общую характеристику (-d)?

Вывод:

Dokumenty
Dropbox
Muzyka
Obrazy
Pobrane
Publiczny
Pulpit
Szablony
Wideo
dosgames
learning_linux
new
tset

Я использую польскую версию, поэтому названия каталогов. Тем не менее, все они являются системными каталогами по умолчанию, если, конечно, нет (т.е. Dropbox, dosgames)

0
задан 13 April 2017 в 15:23

1 ответ

Оболочка сортирует их в соответствии с установленным языком . В частности, переменная LC_COLLATE управляет сортировкой строк. В вашем случае он сортирует символы в верхнем регистре перед символами в нижнем регистре, как в локали POSIX или C (т.е. сортируется по значениям символов ascii).

$ mkdir Dokumenty dosgames Dropbox Muzyka learning_linux
$ LC_COLLATE=en_US.utf-8; echo */
Dokumenty/ dosgames/ Dropbox/ learning_linux/ Muzyka/
$ LC_COLLATE=C; echo */
Dokumenty/ Dropbox/ Muzyka/ dosgames/ learning_linux/
0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: