在不存在的文件路径上使用文件名生成修饰符
Using filename generation modifier on nonexistent filepath
我想获取不存在文件路径的目录部分。使用 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
修改器应用于文件名生成,但也可以应用于参数扩展。
$ 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
我想获取不存在文件路径的目录部分。使用 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
修改器应用于文件名生成,但也可以应用于参数扩展。
$ 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