别名不起作用——在别名定义中嵌入带引号的字符串



我试图在zsh shell中在mac终端上创建别名。

一些信息当我做echo $SHELL时,我得到/bin/zsh证明我使用zsh SHELL。

mac有一个命令,你可以用它来打开chrome中的东西,像这样:

open -a "google chrome" myfile.html

我需要为这个做一个别名,但它不起作用,但其他别名工作。
我希望别名像这样运行

chrome myfile.html
这是我的别名文件:
alias x="echo 'y "
alias chrome="open -a 'google chrome' "

所以如果我在提示符下运行x, y确实得到输出,但如果我在命令行运行chrome,它说它找不到文件。我一定要用xargs之类的吗?

注意:这个答案不仅适用于zsh,也适用于bashksh

试题:

alias chrome='open -a "Google Chrome"'

通过在整个定义周围使用单引号(在定义别名时,通常更可取,以防止在别名定义时而不是在执行时过早扩展字符串),可以在内部使用双引号而不转义


定义

问题是'从字面上成为别名的一部分(而不仅仅是') - 没有必要在双引号字符串字面量中转义'

因此,您也可以使用以下语句(但是,如前所述,最好使用单引号将整个定义括起来):
alias chrome="open -a 'Google Chrome'"

您不需要在双引号中引用单引号,否则您将以字面引号结束。试试echo:

$ alias chrome="echo open -a 'google chrome' "
$ chrome
open -a 'google chrome'

这里显示的引号是参数的文字部分。

只需使用:

alias chrome="open -a 'google chrome'"
alias chrome='open -a "google chrome"'
alias chrome="open -a "google chrome""