Обычно случается, когда Что бы вы бежите ln -s /directory/* /target-directory
является то, что оболочка будет расширяться /directory/*
в список (ныне существующих, видимых) файлов в/directory /, а затем передать это значение в ln
в свой список аргументов. Результат будет эквивалентен чему-то вроде ln -s /directory/file1.txt /directory/file3.pdf /directory/file3.c /target-directory
. Обратите внимание, что команда ln
не увидит «*» и поэтому не будет включать ее ни в источник ссылки, ни в целевое имя.
Поскольку «*» используется как имя ссылки, оно не расширяется. Есть несколько причин, это может произойти:
Вы могли бы иметь набор опций noglob
оболочки. Но вы сказали в комментариях, что это не так.
Расширение оболочки может не совпадать с любыми файлами, и в этом случае оболочка будет просто передавать его без изменений до ln
, давая результат, который вы описываете. Вы сказали, что создали файл в исходном каталоге, но повторили ли вы его после этого? Другая возможность заключается в том, что в пути к каталогу есть опечатка, поэтому он не находит соответствующий каталог (не говоря уже о любых файлах в нем).
О, еще одно замечание: вы сказали, когда вы идете в целевой каталог, вы увидите звездочку в кавычки. Как вы выглядите? Поскольку, если вы просто используете ls
, он не должен включать кавычки в листинг, если они фактически не являются частью имени файла. [Edit: Mark Plotnick указал, что некоторые версии GNU ls
do добавляют кавычки к некоторым именам файлов.] Я понятия не имею, как команда, которую вы дали, может добавлять кавычки к имени файла.
Действительно ли не скрытый файл/каталог в каталоге/каталоге? – anishsane
У меня получается другой результат, для меня команда работает так, как ожидалось. – arkascha
Пожалуйста, добавьте дополнительную информацию: какой тип оболочки вы используете? Какое распределение? – arkascha