我想获取不存在文件的路径的目录部分。使用dirname
命令不是一种解决方案,因为我想在可用时坚持使用Zsh工具。
目标是使用mkdir
命令创建包含新文件的目录。
问题在于,使用文件名生成修饰符:h
似乎不适用于不存在的文件的路径:
$ echo ./.foo/bar/baz(:h)
zsh: not matches found: ./.foo/bar/baz(:h)
$ mkdir --parents ./.foo/bar
$ touch ./.foo/bar/baz
$ echo ./.foo/bar/baz(:)
./.foo/bar
答案 0 :(得分:0)
该修饰符应用于文件名生成,但也可以应用于参数扩展。
$ foo=./.foo/bar/baz
$ echo $foo
./.foo/bar/baz
$ echo $foo(:h)
zsh: not matches found: ./.foo/bar/baz(:h)
在这里,首先扩展参数 foo ,然后修饰符触发文件名的生成。
为防止这种情况,请使用以下语法:
$ echo ${foo:h}
./.foo/bar