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