Несоответствие между этими двумя расширениями

Вы определяете свои собственные конвенции, но я действительно избегал бы /usr/include.

/usr/lib/<lang> кажется популярным здесь для интерпретируемых языков (я имею, по крайней мере, /usr/lib/python, /usr/lib/perl и /usr/lib/ruby с вариантами для обработки версии определенный материал), я думаю это /usr/share/<lang> является более надлежащим от FHS (я имею также /usr/share/tcl с символьной ссылкой от /usr/lib/tcl) при отсутствии двоичных данных там (или по крайней мере только архитектурно-независимых двоичных данных).

Все еще в духе FHS, я был бы склонен использовать /opt/<lang>/share или /opt/<lang>/lib при обеспечении установщика (или распределение) простой способ использовать /usr/share/<lang> или /usr/lib/<lang>.

2
09.09.2013, 02:26
2 ответа

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

В случае echo, оболочка, расширенная * и Вы не получаете содержание каталога, потому что эхо просто печатает то, что было передано ему как аргументы.

Можно сказать ls не показать содержание каталогов при помощи ls -d *.

Учитывая эту установку:

$ mkdir dir{1,2}
$ touch file{1..3} dir{1,2}/morefiles{1..5}
$ ls
dir1  dir2  file1  file2  file3

Передача * к оболочке (удар), удар причин для расширения * кому: dir1 dir2 file1 file2 file3. Используя echo с *, вызовет echo отображаться что оболочка, расширенная от *:

$ echo *
dir1 dir2 file1 file2 file3

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

$ ls *
file1  file2  file3

dir1:
morefiles1  morefiles2  morefiles3  morefiles4  morefiles5

dir2:
morefiles1  morefiles2  morefiles3  morefiles4  morefiles5
$ 

Можно или отбросить * на ls (как проиллюстрировано после того, как я создал структуру каталогов в качестве примера), или, как упомянуто в моем использовании ответа ls -d * вместо этого:

$ ls -d *
dir1  dir2  file1  file2  file3

Это останавливается ls от показа содержания dir1/ и dir2/.

9
27.01.2020, 21:49
  • 1
    Но почему ls * команда не возвращает sudirectories как список прямо в pwd? (Только возвратите файлы в pwd как первый список, и выполняется ls каждому подкаталоги в pwd как 2-й, 3-й, и больше списков.) –  user43312 08.09.2013, 18:05
  • 2
    Но почему ls * команда не возвращает sudirectories право в pwd в 1-м списке? Я видел, что результат составлен с несколькими списками, каждый из которых мог рассматриваться как выполнение ls команда. Только файлы в pwd возвращаются в первом списке, и ls выполняется каждому подкаталоги в pwd как 2-й, 3-й, и больше списков. –  user43312 08.09.2013, 18:16
  • 3
    Это, как ls отображается, он производится, это от одного ls команда, не несколько, Вы видите это, если Вы делаете ls dir*, который только покажет содержание этих двух каталогов. –  Drav Sloan 08.09.2013, 18:22
  • 4
    @slm Blatent моста использования mkdir/touch из более раннего ответа, который Вы дали. Это определенно - сжатый способ обеспечить пример :) –  Drav Sloan 08.09.2013, 23:03

Просто для уточнения превосходный ответ DravSloan, нет никакого несоответствия. * расширен в обоих случаях оболочкой, и в обоих случаях она расширяется до точно того же самого. Различие находится в пути echo и ls рассматривайте их аргументы.

echo просто распечатает каждый из аргументов, которые Вы даете ему. ls будет list directory contents поскольку в руководстве говорится. Так, в обоих случаях оболочка выполняет программу слева (echo или ls) и рассматриваемая программа делает то, что она, как предполагается, делает с каждым из ее аргументов. Результат отличается, потому что программы отличаются, не потому что * расширен по-другому.

5
27.01.2020, 21:49
  • 1
    Да может быть, это - то, где беспорядок OP возникает - я попытался разъяснить свой ответ немного! –  Drav Sloan 08.09.2013, 18:40

Теги

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