Использование модификатора генерации имени файла на несуществующем пути к файлу - PullRequest
0 голосов
/ 28 октября 2018

Я хочу получить часть каталога пути к несуществующему файлу.Использование команды 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

1 Ответ

0 голосов
/ 28 октября 2018

Модификатор применяется к генерации имени файла, но также может применяться к раскрытию параметра.

$ 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
...