我注意到我有错误输入ls
as的倾向;s
,所以我决定我应该只创建一个别名,这样它就不会抛出错误,而是运行我的意思的命令。
但是,知道分号字符在 shell 脚本/命令中是有意义的,有没有办法让我用分号键创建一个别名?我尝试了以下方法无济于事:
alias ;s=ls
alias ";s"=ls
alias \;=ls
是否可以在 shell 别名中使用分号作为字符?我如何在 ZSH 中这样做?
首先也是最重要的:考虑以不同的方式解决您的问题 - 以这种方式对抗 shell 语法是自找麻烦。
据我所知,虽然您可以定义这样的命令 - 尽管不是使用别名- 但引用它的唯一方法是引用,例如\;s
- 这违背了目的;请继续阅读以了解技术细节。
别名不起作用:虽然zsh
允许您定义它(可以说,它不应该),但调用它所需的机制 -引用- 也是绕过别名并因此阻止调用的机制。
但是,您可以(仅)在您的(在 、 和 中工作)中定义一个函数或脚本,只要您引用zsh
$PATH
它(例如, as或or )调用它,这会违背目的。zsh
bash
ksh
dash
\;s
';s'
";s"
作为记录,这里是命令定义,但同样,它们只能被引用来调用。
功能(zsh
仅适用于;放置在初始化文件中,例如~/.zshrc
):
';s'() { ls "$@" }
可执行脚本;s
(工作在dash
、bash
和ksh
;zsh
中的目录中$PATH
):
#!/bin/sh
ls "$@"