"Объединенные" символические ссылки [дубликат]

Для большинства приложений можно подделать время с помощью метко названного faketime . Запустите faketime 'вчера' myapp , чтобы myapp полагал, что это вчера. Faketime работает, перехватывая вызовы библиотеки, сделанные приложением. Он работает только с динамически связанными приложениями, но обычно этого достаточно.

Ваш сервер, вероятно, отнимает время у гипервизора.

3
24.02.2016, 00:39
2 ответа

Символьные ссылки просто говорят: "Поищите этот файл в другом месте". Содержимое символической ссылки совпадает с содержимым целевого файла. Так что нет, символические ссылки не могут этого делать. Я предлагаю не пытаться искать функцию, связанную с символическими ссылками, потому что то, что вам нужно, таковым не является. Я бы не понял, чего вы хотите от термина "объединенная символическая ссылка", и даже увидев то, чего вы хотите, я не представляю, почему вы это так называете.

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

В современных unix-системах есть способ заставить произвольные данные выглядеть как файл, независимо от того, как они хранятся: FUSE. В FUSE каждая операция над файлом (создание, открытие, чтение, запись, список каталогов и т.д.) вызывает некоторый код в программе, и этот код может делать все, что вы хотите. Смотрите Создание виртуального файла, который на самом деле является командой. Вы можете попробовать scriptfs или fuseflt, или, если вы чувствуете себя амбициозным, создать свой собственный.

Для данного случая использования я не думаю, что динамическая генерация - это то, что нужно. Это несколько сложно, и не везде будет работать (FUSE не всегда доступен для пользователей без рута, а на некоторых системах, таких как Windows, вообще недоступен, даже с Cygwin). Я рекомендую вам использовать тот же подход, что и я: для файлов, которые имеют какой-либо включаемый объект (.bash_profile, .gitconfig, ...), используйте его; для других файлов, когда вы изменили один из составляющих файлов, введите make (или любую другую систему сборки, которую вы предпочитаете) для регенерации файлов, которые читают приложения.

3
27.01.2020, 21:22

Модульные файлы конфигурации как функция обработки текста

То, что вы просите, - это более правильная обработка текста, чем обработка файлов, и это во многом зависит от того, какая программа использует текстовые файлы.

Традиционный простой способ сделать то, что вы хотите, - это иметь файл верхнего уровня, который включает другие файлы в модульном виде, например:

~ / .bash_profile:

source ~/dotfiles/bash/bash_profile
source ~/dotfiles/proj/bash_profile

Преимущество заключается в том, что вы можете комментировать вычерчивает строки для внесения временных изменений, и вы сохраняете намерение очевидным:

source ~/dotfiles/bash/bash_profile
# source ~/dotfiles/proj/bash_profile
source ~/dotfiles/proj2/bash_profile

Управление сценариями с каталогами символических ссылок

Но если вы действительно хотите использовать символические ссылки для управления коллекцией файлов конфигурации bash , есть хорошо зарекомендовавший себя способ сделать это с очень небольшим количеством «клея» поверх существующих символических ссылок.

Попробуйте создать каталог с именем (например) ~ / .bash_profiles , который содержит ссылки с такими именами, как 00base (указывающие на ~ / dotfiles / bash / bash_profile ]) и 10proj (указывая на ~ / dotfiles / proj / bash_profile ), затем поместив это в ~ / .bash_profile:

for file in ~/.bash_profiles/* ; do source $file ; done

Затем вы можете активировать, деактивировать и изменить порядок config, манипулируя символическими ссылками и не редактируя файлы. Это работает, потому что расширение ~ / .bash_profiles / * лексически отсортировано с помощью bash.

Именно так классический Unix / Linux init позволяет управлять сценариями запуска системы. Вероятно, это будет излишним для bash , если у вас нет очень сложного набора настроек для выборочной загрузки в зависимости от проекта, над которым вы работаете.

1
27.01.2020, 21:22

Теги

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