假设我们有:
node_modules/
suman/
是node_modules/suman
一个符号链接
如果我们这样做:
mkdir -p "$PWD/node_modules/suman"
我假设 mkdir -p 不会覆盖符号链接?
如果$PWD/node_modules
是符号链接呢?我还假设mkdir -p
会将符号链接视为目录?最后,如果“node_modules”符号链接到文件而不是目录怎么办?
答案1
至于mkdir
,它man
使得前两个子问题变得非常明显:
创建目录(如果尚不存在)。
至于文件符号链接,一个简单的实验就足够了:
$ touch a
$ ln -sr a A
$ mkdir -p A/b/c
mkdir: cannot create directory ‘A’: Not a directory
答案2
正如其他答案所说,如果它是符号链接,它将被视为文件并失败。但是,如果其他人来到这里寻找将符号链接视为目录的解决方案,那么其中之一将起作用:
mkdir -p "$(realpath DIR)"
mkdir -p "$(readlink -f DIR)"
答案3
我假设(您没有明确声明)node_modules 作为 $PWD 中的目录或符号链接存在。
首先处理你的最后一个问题 - 如果 node_modules 是一个文件(或者是一个文件的符号链接),则禁止它像目录一样运行。因此,它不能将 /suman 作为子目录并且
mkdir -p node_modules/anything
会失败并显示“不是目录”
如果 suman 作为文件(或者文件或目录的链接或符号链接)存在于目录 node_modules 中,则
mkdir -p node_modules/suman
会因“文件存在”而失败。
如果 suman 作为目录(或目录的符号链接)存在于目录 node_modules 中,则
mkdir -p node_modules/suman
不会产生错误,但不会覆盖现有目录或符号链接。