Вы определяете свои собственные конвенции, но я действительно избегал бы /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>
.
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/
.
Просто для уточнения превосходный ответ DravSloan, нет никакого несоответствия. *
расширен в обоих случаях оболочкой, и в обоих случаях она расширяется до точно того же самого. Различие находится в пути echo
и ls
рассматривайте их аргументы.
echo
просто распечатает каждый из аргументов, которые Вы даете ему. ls
будет list directory contents
поскольку в руководстве говорится. Так, в обоих случаях оболочка выполняет программу слева (echo
или ls
) и рассматриваемая программа делает то, что она, как предполагается, делает с каждым из ее аргументов. Результат отличается, потому что программы отличаются, не потому что *
расширен по-другому.
ls *
команда не возвращает sudirectories как список прямо в pwd? (Только возвратите файлы в pwd как первый список, и выполняетсяls
каждому подкаталоги в pwd как 2-й, 3-й, и больше списков.) – user43312 08.09.2013, 18:05ls *
команда не возвращает sudirectories право в pwd в 1-м списке? Я видел, что результат составлен с несколькими списками, каждый из которых мог рассматриваться как выполнениеls
команда. Только файлы в pwd возвращаются в первом списке, иls
выполняется каждому подкаталоги в pwd как 2-й, 3-й, и больше списков. – user43312 08.09.2013, 18:16ls
команда, не несколько, Вы видите это, если Вы делаетеls dir*
, который только покажет содержание этих двух каталогов. – Drav Sloan 08.09.2013, 18:22