Symlink

如何符號連結文件夾並更改其名稱?

  • August 27, 2022

我在 monorepo 工作

,我希望我的包的範例與結構中

的包分開,

如下所示

my_packages_collection/
 examples/
   foo/
    ...
 packages/
   foo/
     example
     ...

如果我 cd inmy_packages_collection並執行,ln -s examples/foo packages/foo/example 我會進入packages/foo一個名為example而不是文件夾的文件,

如果我跑步,cd packages/foo/example

我會得到cd: no such file or directory: packages/foo/example

vscode顯示

Unable to read file '[...]/foo/example' (Unknown (FileSystemError): An unknown error occurred. Please consult the log for more details.)

ls -l按預期工作

將其“推送”用於科學和 github,並顯示一個“連結文件夾”圖示,其中包含一個帶文本的文件"examples/foo"(LOL)

我錯過了什麼?

之前發佈在這裡

一種方法是從那裡chdir進入packages/foo並建立符號連結:

$ mkdir my_packages_collection && cd my_packages_collection
$ mkdir -p examples/foo packages/foo
$ touch examples/foo/bar
$ cd packages/foo && ln -s ../../examples/foo example
$ ls example
bar

另一種方法是在沒有chdir. 這將更難以在 shell 中完成。

$ cd -
$ cd ..
$ rm -rf my_packages_collection
$ mkdir my_packages_collection && cd my_packages_collection
$ mkdir -p examples/foo packages/foo
$ touch examples/foo/bar
$ ln -s ../../examples/foo packages/foo/example
$ ls packages/foo/example
bar

這些方法中的任何一個的結果都是一個符號連結文件,其中包含字元串../../examples/foo

$ readlink packages/foo/example
../../examples/foo

引用自:https://unix.stackexchange.com/questions/715129