在 zsh 别名中替换文件扩展名

Substitute a file extension in a zsh alias

我正在尝试为 cwebp 到 运行 从 zsh 创建别名,将输入图像文件转换为同名的输出图像文件,但使用 .webp 文件扩展名:

# in .zshrc
alias cwebphoto='cwebp -preset "photo" -short -noalpha  -o ${1%.*}.webp'

然后在 zsh

> cwebphoto hello.png

Returns 一个名为 .webp 的转换文件 我怎样才能 return 一个名为 hello.webp 的文件?

感谢任何帮助!

你想要一个函数。

cwebphoto () {
  cwebp -preset "photo" -short -noalpha  -o ${1%.*}.webp
}

(在zsh中,您也可以使用:r代替${1%.*}。)