Терминал macOS: `ls` сортирует результаты с заглавными именами - PullRequest
0 голосов
/ 18 декабря 2018

Как я могу исправить это поведение сортировки по умолчанию для ls в терминале macOS?Я хочу, чтобы результаты были без учета регистра и в алфавитном порядке.

Вот пример, иллюстрирующий текущее и желаемое поведение при запуске ls в каталоге с файлами / каталогами: Apple_, apple, Basket_, basket

Текущее поведение:

Apple_

Корзина_

яблоко

корзина

Желаемое поведение:

Apple_

яблоко

Basket_

корзина


Кто-нибудь знает, какдостичь этого?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Так что @Yoric был очень близок, но содержание его функции было немного неправильным: оно действительно сортировало бы результаты в алфавитном порядке, но при использовании флага `-la 'это могло бы испортить порядок« точек »файлы / каталоги (начинающиеся с точки).

Я нашел правильное решение, адаптировав его в следующем сообщении переполнения стека : Выполнение команды "ls" sort "a "before" B "(vs a-> b-> A-> B)

Шаги:

  1. Открыть / создать файл профиля оболочки вваш домашний каталог (~/).(Этот файл автоматически запускается при каждом запуске оболочки).Это будет:

    • .bash_profile если не используется инфраструктура конфигурации
    • .zshrc если используется zsh
  2. Добавитьследующий код


ls_sort() {
  LC_COLLATE=en_US.utf8 ls "$@"
}

alias ls='ls_sort'

Перезапустите свой терминал

Спасибо, @Yoric, за помощь в получении этого решения!

0 голосов
/ 18 декабря 2018

Вы можете сортировать так:

$ mkdir testdir && cd testdir
$ touch apple basket Apple_ Basket_
$ ls | LC_COLLATE=C sort --ignore-case

Вывод (на самом деле не совсем ожидаемый результат):

Apple
apple_
basket
Basket_

ОБНОВЛЕНИЕ

Чтобы сделать поведение по умолчанию ls, вы можете добавить этот фрагмент кода в файл ~/.bash_profile (он будет действовать после открытия нового окна терминала):

ls_sort() {
  ls $1 | LC_COLLATE=C sort --ignore-case
}
alias ls='ls_sort'

На самом деле вы можете назвать псевдоним lss вместо ls в последней строке выше, чтобы не потерять исходное поведение ls.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...