У меня есть два файла: foo.txt и bar.txt. Мне нужен файл с именем foobar.txt, который является содержимым как foo.txt, так и bar.txt. И если я изменю какой-либо файл, я хочу, чтобы foobar.txt по-прежнему выводил все, что сейчас находится в foo.txt, за которым следует bar.txt.
Теперь, чтобы получить foobar.txt, я могу выполнить:
cat foo.txt bar.txt > foobar.txt
Но мне придется делать это каждый раз, когда я редактирую любой исходный файл.
В идеале хотелось бы сделать что-то вроде этого:
ln -[some arg that uses a command rather than a real file] "cat foo.txt bar.txt" foobar.txt
Это вообще возможно?
Вы можете сделать это через inotifywait команда, она находится в пакете inotify-tools. Насколько я понимаю, это невозможно сделать с помощью команды ln.
Вы можете написать для этого FUSE (пространство пользователя файловой системы). По сути, это написание программы пользовательского пространства, которая будет выступать в качестве файловой системы ядра. Вы можете заставить его иметь любые побочные эффекты, которые вы хотели бы создать, например, когда ваш целевой файл открывается, он кэширует указанные в каталоге файлы foo.txt и bar.txt и возвращает блоки из этого кеша.
В Википедии есть статья здесь: https://en.wikipedia.org/wiki/Filesystem_in_Userspace
Похоже, для того, о чем вы просите, потребуется много работы.