Что период (.) означает в начале имени файла в терминальной команде?

В chmod -R 421 .gimp, что период означает непосредственно предыдущий g в gimp? Это подобное * подстановочный знак?

6
задан 6 September 2018 в 00:30

5 ответов

Точка в той ситуации является частью имени файла и имеет в контексте Linux/Unix подразумевать, что файл или каталог скрыт, Вы не видите его в файловом менеджере (Наутилус, который является значением по умолчанию на ванильной Ubuntu), если Вы не нажимаете CTRL+H.

И, если Вы только используете ls в терминале Вы не будете видеть его также, если Вы не будете использовать -a или -A флаг с ним (т.е. ls -a или ls -A или ls --all или ls --almost-all).

Однако точка (.) имеет различные значения в различных контекстах:

  • Например, в пути (./file) это описывает текущий каталог, Вы находитесь в, в то время как ../file относится к file в родительском каталоге.
  • И существует даже команда . какие источники (выполнения) колотят файлы сценария. Так . ./file (возражайте против интервала), получил бы названный сценарий file в текущем каталоге.
  • и в контексте REGEX, точка означает "любой символ".
19
ответ дан 23 November 2019 в 07:13

.gimp в Вашем примере имя файла, "." первого символа.

Значение его является нормальным ls (ls=list файлы), не покажет файлы с"." как первый символ, он только перечисляет с ls-a (или файлы списка - все)

20
ответ дан 23 November 2019 в 07:13

Ничего. Это - часть имени файла.

Вы, кажется, называете каталог .gimp.

Период. (lol)

Любая другая дискуссия об этом принадлежит вопроса о том, почему люди выбирают определенные имена файлов для вещей.

5
ответ дан 23 November 2019 в 07:13

Ведущая точка на имена файла или каталога не несет никакого конкретного значения, что касается самого Linux. Однако определенные утилиты (такой как ls или файловый менеджер Наутилуса), рассматривают такие имена файлов, как "скрытый", который является, они игнорируют их в своем выводе и только покажут им, если Вы предоставляете определенную возможность.

В действительности это произошло с тем, что технически можно считать ошибкой. Ограбьте Щуку, один из исходных людей, которые работали над командой UNIX, рассказывает (источник):

Давно, поскольку дизайн файловой системы Unix разрабатывался, записи. и.. появившийся, для создания навигации легче. Я не уверен, но я верю.. вошел во время Версии 2, переписывают, когда файловая система стала иерархической (она имела совсем другую структуру вначале). Когда один ввел ls, однако, эти файлы появились, таким образом, или Ken или Dennis добавили простой тест к программе. Это было в ассемблере затем, но рассматриваемый код был эквивалентен чему-то вроде этого:

    if (name[0] == '.') continue;

Этот оператор был немного короче, чем, каково это должно было быть, который является

   if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

но эй, это было легко.

Закончились две вещи.

Во-первых, плохой прецедент был создан. Много других ленивых программистов представило ошибки путем создания того же упрощения. Фактические файлы, начинающиеся с периодов, часто пропускаются, когда они должны считаться.

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

Я вполне уверен, понятие скрытого файла было непреднамеренным последствием. Это была, конечно, ошибка.

В наше время этот вид стал конвенцией назвать их "скрытыми" даже при том, что их содержание не скрыто вообще. Реальный скрытый, или анонимный файл / анонимный inode, был бы реализован через вводный файл и содержание его открытого дескриптора файла, но удаление связи с ним из каталога, который делает сами данные, чтобы быть доступным только для программы, которая содержит тот файл и его дочерние процессы (предпочтительно разветвленный после удаления связи с файлом), начиная с дочерних процессов, наследовало дескрипторы файлов. На самом деле это - то, как удар реализует здесь-документы.

Совсем другая история - когда имя файла является самостоятельно точкой . или .., которые на самом деле имеют немного истории позади них, и я предполагаю, что Вы читаете, Почему текущий каталог в команде ls определен, как связано с собой?

5
ответ дан 23 November 2019 в 07:13

Точка в начале имени файла скрывает файл в общих файловых менеджерах и для общих программных оболочек.

Причина является исторической, когда ls скрытый специальные каталоги . и .. путем сокрытия всего, что запускается с периода. Затем люди использовали имена файлов, начинающие с периода скрыть файлы, таким образом, они только перечислены с ls -a, например, для создания конфигурационных файлов невидимыми, которые обычно не нужны в выводе ls.

Так точка в chmod -R 421 .gimp не модификатор команды, а часть фактического имени каталога.

3
ответ дан 23 November 2019 в 07:13

Другие вопросы по тегам:

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