Заставить ls выполнять разумный порядок сортировки, но не выводить греческие символы как "??"

Краткий ответ может быть таким: :Это философия Unix "Делай одно дело и делай это хорошо ".

Сначала поймите разницу между MTA и MUA:

  • MUA (Почтовый пользовательский агент )(, такой как Thunderbird и т. д. )— это программа, позволяющая легко взаимодействовать с пользователем. Эта программа в основном ориентирована на взаимодействие с пользователем. Он представляет пользователю текущую почту в различных почтовых ящиках и позволяет пользователю отправлять почту на заданный почтовый адрес. Возможны дополнительные функции. В основном он обрабатывает все вещи более низкого уровня, чтобы пользователь был доволен.
  • MTA — это фоновая программа. Его единственная цель — обеспечить стабильную серверную часть для передачи почты из одного «места» в другое. (Здесь «местоположение» может означать хост, человека или что-то еще. Просто чтобы понять идею. )Его интерфейс в основном представляет собой программный API (, см. Протокол SMTP ). Конечно, человек может подделать такой текст, но не так просто сохранить его в спецификациях вручную, когда вы делаете пример рассылки из реального мира.
  • MDA (Агент доставки почты )— это программа, которая предлагает доступ к почтовым ящикам пользователя. Он также использует программный интерфейс. Примерами таких интерфейсов являются POP3 или IMAP.

Когда пользователь отправляет почту в своем MUA, MUA подключается к MTA своего интернет-провайдера. MTA проверяет учетные данные пользователей и принимает почту для доставки. Сообщается, что сообщение отправлено пользователю. MTA провайдера теперь проверяет, как доставить почту, и, возможно, находит следующую станцию, на которую следует отправить почту. Таким образом, почта может сделать несколько переходов, прежде чем будет найден хост, являющийся конечным пунктом назначения почты. Этот MTA будет знать, как поместить его в почтовый ящик целевого пользователя (, как правило, локально на сервере ). Теперь получатель может открыть свой MUA и подключиться к MDA своего интернет-провайдера. MDA просматривает локальную файловую систему и сообщает, что появилось новое сообщение и его содержимое.

Итак, простой ответ: :Cron — это программа, и поэтому он будет использовать программный интерфейс MTA вместо MUA. (как cron вообще должен взаимодействовать с этими программами?)

Для отправки почты с помощью MTA :Подключитесь к портам 25, 578 или любому другому и используйте протокол SMTP (S ). Это именно то, что ваш MUA делает для вас под капотом. Вы можете/должны использовать те же параметры учетных данных/хоста/порта, которые вы использовали бы в настройках вашего MUA.

MUA может осуществлять сетевую связь с MTA. Таким образом, на каждой машине не требуется локальный MTA (, вам не нужен локальный постфикс для запуска Thunderbird, верно? ).

Однако когда мы говорим о службах на машине, которая должна быть способна отправлять почту куда угодно, на самом деле есть два варианта:

  1. Программа (, например. cron )знает об удаленном MTA, который принимает почту. Это нужно делать индивидуально для каждой программы, что в лучшем случае громоздко при администрировании многих сервисов.
  2. Для всех писем существует «маршрут по умолчанию». Тогда любая локальная программа может просто использовать этот маршрут без ручной настройки.

Здесь в игру вступает упомянутая выше философия unix :Вместо реализации связи (и авторизации и т. д. )для всех программ она реализована один раз (MTA ), и эта программа предоставляет интерфейс по умолчанию, который принимает почту от локальных служб (либо через сокет unix, канал к командному или сетевому порту ). По этой причине большинство служб предполагают, что локальный агент передачи сообщений работает. Этот MTA может быть очень минимальным, который просто перенаправляет почту более крупному для сортировки и т. д.

Фактическим -стандартом здесь была недавняя программа sendmail (, также являющаяся MTA ).Из-за огромных проблем с ним он был заменен другими MTA, такими как postfix, которые по-прежнему предоставляют старый интерфейс sendmail (по той причине, что существует оболочка sendmail в пакете postfix ).


Редактировать 1:@ Тим, почему ты думаешь, что отправка и получение должны быть симметричными? MTA отвечают за взаимодействие между -серверами. Этот в каком-то смысле симметричен, но вы видите только одну его сторону (при отправке писем другим ). Прием осуществляется серверами вашего провайдера. Сама по себе передача почты очень быстрая (вопрос мс ).

Таким образом, вам не нужно что-то вроде MDA на отправляющей стороне. Вы можете просто попробовать и отправить почту. Думайте об этом как о почтовой службе. Вы просто оставляете посылку в почтовом отделении, они позаботятся обо всех дальнейших пересылках.

MUA просто отправляет почту. Как только он будет принят первым MTA, MUA предполагает, что он отправлен . Опять почтовый аналог :Как только вы кладете посылку на почту для отправки, вы предполагаете, что она будет доставлена. Если что-то пойдет не так в пути, вам вернут посылку. Именно это происходит, когда почта вызывает проблемы в пути. MTA отправит вам информацию о возврате (, так называемую отказную передачу ), если сообщение не может быть доставлено на следующую станцию.

Теперь снова принимающая сторона. Сначала я снова использую почтовый аналог. Если бы вы всегда были на связи, а также всегда находились в одном и том же месте, почтальон мог бы напрямую прийти к вам, чтобы доставить вашу почту. Это означало бы, что MTA доставляет почту непосредственно вам.

К сожалению, у вас не -статический IP-адрес (вы не всегда находитесь в одном и том же месте )и вы точно не всегда там (не всегда дома ). Как результат,MTA может попытаться доставить почту, но поскольку вы недоступны, почта будет возвращена (, см. выше ).

Чтобы избежать этого, у вас есть свой почтовый ящик. Это верно как для электронной почты, так и для обычной почты. Сотрудник почты/MTA кладет почту в ящик на своих условиях (времени ). Всякий раз, когда сообщение нужно доставить, он может это сделать. В случае MTA это означает не что иное, как сохранение файла в специальной папке.

Почтовый ящик представляет собой элемент синхронизации между вами и почтальоном. Вы можете подойти к почтовому ящику в любое время , сочтете его подходящим, и найдите свой пост. Поскольку MTA сохранил почту на сервере, прямого доступа у вас нет. Здесь в игру вступает MDA. MDA разрешает доступ к почтовому ящику от вашего имени и в соответствии с вашим временем.

1
07.03.2021, 01:56
2 ответа

Если ваш язык en_US.UTF-8и LC_ALL=C lsдает вам нужный порядок, тогда

LC_COLLATE=C ls

должен дать вам нужный порядок и показать βкак β.

Установка LANGдля любой локали UTF -8 должна отображать βкак β. Вы используете en_US.UTF-8, поэтому нет необходимости менять LANG.

В одном из комментариев рекомендуется «установить LANGна греческий, а LC_COLLATEна C». Ваша попытка была LC_COLLATE="C" LANG="el_EL.UTF-8" ls, и она не сработала, потому что:

  • греческая локаль el_GR.UTF-8, а не el_EL.UTF-8;
  • даже если я ошибаюсь и el_EL.UTF-8существует, возможно, вы (ваша ОС )никогда не создавала для нее файлы локализации из шаблонов.

Вероятно, вы также не создали файлы для el_GR.UTF-8. Чтобы их получить, вам нужно отредактировать /etc/locale.genи раскомментировать el_GR.UTF-8, затем запустить sudo locale-gen. И тогда LC_COLLATE=C LANG=el_GR.UTF-8 lsбудет работать. Но опять же, вам не нужно этого делать, вашего en_US.UTF-8достаточно, чтобы показать βкак β. Все, что вам нужно, это LC_COLLATE=C, чтобы изменить порядок сортировки.

3
18.03.2021, 22:26

На моей машине:

$ env LC_COLLATE=C ls
_y  a  b  c  x  z  β

Я думаю, что в своем комментарии вы указали неверную локаль,вот так (Мне нужно было -Nвоспроизвести ваш вывод):

$ env LC_COLLATE=C LANG="sdjf" ls
 _y   a   b   c   x   z  ''$'\316\262'
$ env LC_COLLATE=C LANG="sdjf" ls -N
_y  a  b  c  x  z  ??

Если у вас нарушена только локаль, вы можете использовать флаги --show-control-chars -Nвот так:

$ env LC_COLLATE=C LANG="sdjf" ls --show-control-chars -N
_y  a  b  c  x  z  β
$ env LANG=C ls -N --show-control-chars
_y  a  b  c  x  z  β

Я использую Ubuntu 20.04.2, если это имеет значение

2
18.03.2021, 22:26

Теги

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