使用分号字符创建 shell 别名

Create shell alias with semi-colon character

我注意到我有将 ls 错误输入为 ;s 的倾向,所以我决定我应该创建一个别名,这样它就不会抛出错误,而是运行命令我是说。

但是,知道分号字符在 shell scripts/commands 中有含义,有什么方法可以让我用分号键创建别名吗?我尝试了以下无济于事:

alias ;s=ls
alias ";s"=ls
alias \;=ls

是否可以在 shell 别名中使用分号作为字符?我如何在 ZSH 中这样做?

  • 首先也是最重要的:考虑以不同的方式解决您的问题 - 以这种方式对抗 shell 语法是自找麻烦。

  • 据我所知,虽然你可以定义这样的命令——尽管没有别名 - 调用的唯一方法是引用,例如作为 \;s - 这违背了目的;继续阅读以了解技术细节。

    • 别名将不起作用:而zsh允许您定义它(可以说,它不应该),调用它所需要的机制 - 引用 - 也是 绕过 别名并因此 防止 调用的机制。

    • 但是,您可以定义一个函数(仅限zsh)或脚本您的 $PATH(在 zsh 以及 bashkshdash 中工作), 只要您调用它 引用 (例如,作为 \;s';s'";s"),其中 事与愿违.

作为记录,这里是命令定义,但是,同样,它们只能被调用 quoted

函数(仅在 zsh 中有效;放置在 ~/.zshrc 等初始化文件中):

 ';s'() { ls "$@" }

可执行脚本 ;s(适用于 dashbashkshzsh;放置在您的 $PATH 目录中):

 #!/bin/sh
 ls "$@"