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

293
Protocol Zero

Я по ошибке задал этот вопрос в StackOverflow, и они предложили мне задать его здесь.

Я прочитал много других постов здесь, и на них все, кажется, отвечают успешно, но я просто не могу следовать за ними. Я все еще очень новичок, и я не хочу пробовать метод проб и ошибок, потому что я не уверен, смогу ли я это исправить. Вот где я.

У меня есть файл с именем "php.ini", который находится в корневой веб-папке моего хоста. Мне нужно, чтобы эта папка также находилась в каждой папке и подпапке на сервере. Ведущий предложил «создать символическую ссылку в подпапках», и это была их помощь. Я спросил, как, и они сказали мне, чтобы погуглить это. Так я и сделал .. и я потерян. Пока у меня есть это:

ln -s /path/to/htdocs/php.ini LINK-NAME 

Но на самом деле я не уверен, правильно ли это, и я не уверен, что LINK-NAMEэто должен быть, или что он делает. Кроме того, я не знаю, создаст ли это ссылку в каждой папке и подпапке? Так как я должен использовать SSH для ввода этой команды, я хочу убедиться, что она у меня есть, прежде чем я попробую. Извините, если это вопрос базовых знаний (noob), все мои поиски просто дают пример, и ни один из них не объясняет, что они делают!

Спасибо вам большое!

0
Не могли бы вы немного поэкспериментировать? Просто попробуйте команду в некотором каталоге * test * с подкаталогами. Вы не решите проблему полностью, но мы надеемся, что «каким должно быть« LINK-NAME »» и «если это создаст ссылку в каждой папке и подпапке», больше не будет загадкой. Плюс `man ln` твой друг. «Убедиться в том, что у вас все правильно, прежде чем пытаться», не поможет вам в Linux. :) Или, может быть, вам не хватает знаний о том, как создать тестовый каталог и привести в порядок беспорядок, который вы там можете вызвать? Знакомы ли эти команды: `mkdir`,` cd`, `cp`,` rm`, rmdir`? Я не осуждаю; просто спрашиваю. Kamil Maciorowski 6 лет назад 0

1 ответ на вопрос

0
Xen2050

Вы могли бы findкаждый каталог в некотором пути

find path -type d 

и найти find -exec(или -execdirдолжен быть более безопасным) ln(с более -vподробным) на нем (при условии, что полный путь, на который вы хотите сослаться, есть /path/to/htdocs/php.ini)

find path -type d -execdir ln -v -s /path/to/htdocs/php.ini '{}' ';' 

Или вместо использования, -execили -execdirвы могли xargsбы направить вывод поиска в (разделенный нулями вывод, может быть полезным, -print0/ -0), или использовать в скрипте bash / sh и т. Д ...


Но сначала вы можете проверить, есть ли там уже какие-либо файлы php.ini, с помощью

find path -name php.ini 

или если вы создали несколько новых ссылок на php.ini и хотите проверить, на что они действительно указывают, используйте

find path -name php.ini -execdir readlink '{}' ';' 

или если вы допустили ошибку при создании тонны плохих файлов php.ini, вы можете удалить их с помощью

find path -name php.ini -delete 

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