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

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

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

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

  • что означает @ в ls -l?
  • Просмотр режима файла без перечисления всех файлов
  • Список файлов в другом (нерабочем) каталоге с шаблоном
  • ls должен отображать содержимое структуры плоского каталога в столбцах
  • Игнорировать все совпадения для отрицательного шаблона extglob в рекурсивном ls
  • Как я могу найти файл с фиксированной длиной имени, используя ls?
  • Как отображать «доступные для человека» размеры файлов в результатах поиска?
  • Автозаполнение Bash дает другое имя файла, чем ls
  • 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 сформулировано именно так.

    Interesting Posts

    Изменение столбца нескольких файлов csv

    Команда ulimit не найдена (без sudo) и ошибка – coredumpsize: не может установить ограничение (операция не разрешена)

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

    Низкий графический режим и выходы Bizarre Terminal

    Сделать содержимое терминала соответствующим размеру окна

    Означает ли Windows символические ссылки Linux?

    Сертификат SSL подстановки не работает с открытым доменом

    В emacs существует ли способ Hex редактировать / просматривать буфер без потери информации об отмене?

    Недавно я клонировал свой диск, а при загрузке я должен ждать на этом экране, который содержит несколько сообщений об ошибках

    Значение аппаратной платформы в команде uname

    Значение ядра Linux default_console_loglevel

    Ошибка проверки ключа хоста (код выхода 255) при использовании pdcp

    виртуальный бокс uefi PXEBoot

    bash: если проблема состояния

    tmux: установить сеанс по умолчанию для подключения

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