foo
我有一个包含文件和目录的目录。我想创建一个新目录foo_0311
,其中包含与(并在文件更改时看到更新)相同的文件foo
,但允许执行touch foo_0311/a.txt
而不是a.txt
出现在foo
.
我曾经有一种方法可以做到这一点,但是当我的 bash 历史记录消失时它就丢失了,并且我无法重建它。我记得它首先涉及创建foo_0311
然后使用,ln
如下所示:
mkdir foo_0311
ln ???
但我不记得它的选项。 IIRC,当我cd
执行此操作并发出后进入目录时ls -l
,文件没有显示为链接,但更改反映在原始foo
目录中,而我在 中创建的新文件foo_0311
不存在于foo
.
答案1
您可以要求cp
为您创建一个所谓的链接树:
cp -al foo foo_0311
-a
递归复制所有内容,并-l
为文件创建硬链接而不是复制它们。
如果foo_0311
已经存在那么你应该使用
cp -al foo/* foo_0311
反而。
这会创建硬链接而不是符号链接,因此它们不会出现在->
的输出中ls -l
(但由于2
第二列中的 ,您可以发现它们)。您在任一目录中创建的任何新文件都不会出现在另一个目录中,但您在一个目录中编辑的文件将出现在另一个目录中,只要它们实际上是就地修改的。 (像 Emacs 这样的编辑器创建新文件并将它们移动到位,这打破了这一点,尽管它实际上对于链接树非常有用,因为它允许某种形式的写时复制......)
答案2
从我看来——你试图创建一些目录,然后创建一个到该目录的符号链接......就像Windows机器在“程序文件”中包含主程序和一个图标(又名...... *nix 世界中的符号链接)。要实现这一点,您只需执行以下操作:
=>> mkdir -p ~/home/folder/ "will make the directory for you if it doesn't exist"
=>> touch ~/home/folder/file.txt "will create the file"
现在为该文件创建一个符号链接,
ln -sf ~/home/folder/file.txt ~/home/folder2/file.txt
您可能需要使用 sudo 运行它,具体取决于创建符号链接的位置。您还可以查看 ln 的手册页手册页....你就完成了。