sudo ls не показывает скрытые файлы в Linux

Сегодня я обнаружил, что sudo ls показывает скрытые файлы (то есть те, у которых есть имена, начинающиеся с . ) На OS X. Это меня так сильно удивило, что я задал вопрос об этом поведении, которое я до сих пор считаю несколько странным и неожиданным.

Оказывается , это поведение восходит к 2BSD в 1979 году .

Учитывая это, я хотел бы задать следующий вопрос. Почему Linux не ведет себя так?
Был ли период времени, когда у какого-то другого вида nixes было такое поведение? Есть ли какие-либо документы, сообщения, сообщения, объясняющие, кто и почему решил, что эту функцию нельзя копировать вообще или ее следует отбросить, если она была скопирована изначально?

  • Можно ли перечислить файлы между двумя именами буквенно-цифровым способом?
  • ls или find, чтобы исключить двоичные файлы
  • Переменная CLICOLOR env
  • изменить поведение LS_COLORS
  • Значение «l» в «lrwxr-xr-x»?
  • Сгладить вывод рекурсивного списка каталогов
  • Как сопоставить нечувствительные к регистру шаблоны с ls?
  • ls не отображает скрытый файл (OS X)
  • One Solution collect form web for “sudo ls не показывает скрытые файлы в Linux”

    В стандарте POSIX говорится:

    «Имена файлов, начинающиеся с ('.') И любой связанной информации, не должны быть выписаны, если явно не указаны, опция -A или -a предоставляется, или условие, определяемое реализацией, заставляет их записываться».

    Очевидно, что быть корневым не считается условием, которое заставляет скрытые файлы записываться реализацией GNU Coreutils ls которая обычно упакована в дистрибутивы Linux.

    Имеются веские причины не влиять на поведение программ, на которые влияют глобальные переменные, например, какой идентификатор пользователя действует. Сценарий, разработанный как non-root, изменит поведение при запуске с правами root.

    Скрытие файлов, начинающихся с точки, не является механизмом безопасности; он не должен быть связан с контекстами безопасности. Он скрывает то, что мы обычно не хотим видеть, например, каталог .git среди ваших .c исходных файлов или что-то еще. Если вы прочитали доступ к каталогу другого пользователя, вы можете перечислить их скрытые файлы. Точка скрывает элементы, присутствие которых ожидается и неинтересно, а не чье присутствие предназначено быть секретным.

    Пунктирные записи в каталогах, отличные от .. и . не имеют специального статуса операционной системы; просто ls относится к ним специально.

    Я просто попробовал Solaris 10; его также не имеет такого поведения. Это не универсальный «Unixism», который объясняет, почему требование POSIX сформулировано именно так.

    Linux и Unix - лучшая ОС в мире.