7

Я хотел бы получить псевдоним, который дает список каталогов в порядке словаря с "." файлы в первую очередь. Кажется, что один из нескольких способов сделать это лишенным написания моего собственного сценария (что не является реальной проблемой) - установить языковой стандарт с помощью LC_ALL="C" . (Это для справочной страницы по сортировке и нескольких других сайтов).

Однако установка языкового стандарта "C" может (и делает) привести к сбою некоторых программных установок. Поэтому мое краткосрочное решение сродни этому (для краткости это без дополнительных опций ls):

alias ls='(LC_ALL="C"; /bin/ls)'

Но это не позволяет "передавать" аргументы в подоболочку.

Это, конечно, не работает:

alias ls='(LC_ALL="C"; /bin/ls $*)'

Есть ли способ справиться с этим с помощью простого псевдонима? (В отличие от написания сценария / функции оболочки, что я могу сделать).

1 ответ1

10

Вам не нужна подоболочка. Вы можете изменить среду только для следующей команды, добавив в команду присвоение переменной без точки с запятой. Сравните, например, вывод

LC_ALL=C env | grep LC_ALL

с выходом

env | grep LC_ALL

Короче говоря, следующий псевдоним должен работать для вас:

alias ls='LC_ALL=C /bin/ls'

Я использовал /bin/ls как и в вашем примере, но, как отметил Камиль Макиоровский в комментарии к другому ответу, введенная вами в ls команда также может быть псевдонимом, поэтому, возможно, вам следует также рассмотреть эту альтернативу:

alias ls='LC_ALL=C ls'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .