使用分号字符创建shell别名

问题描述:

我注意到我倾向于输入ls作为;s,所以我决定创建一个别名,以便不会抛出错误,而是运行命令I意思。使用分号字符创建shell别名

但是,知道分号字符在shell脚本/命令中有意义,是否有任何方法允许我使用该分号键创建别名?我试过以下无效:

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

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

  • 首先:考虑不同的解决您的问题 - 战斗壳语法这种方式是自找麻烦。

  • 据我所知,,而你可以定义这样的命令 - 尽管不能与别名 - 只有这样,才能通话引述,例如如\;s - 这违背了目的;阅读技术细节。

    • 别名将无法​​正常工作:虽然zsh允许你定义(其中,可以说,它不应该),这将需要呼叫它很机制 - 引用 - 也是绕过别名的机制,因此可阻止调用。

    • 你可以,但是,只要定义功能(仅zsh),或在您的$PATH一个脚本(在zsh作品以及在bashkshdash),你调用它报价(例如,如\;s';s'";s"),其中击败目的

为了记录在案,这里是命令的定义,但同样,他们只能被调用报价

功能(适用于仅zsh;发生在初始化文件如~/.zshrc):

';s'() { ls "[email protected]" } 

可执行脚本;s(在dash作品,bashkshzsh;发生在目录中你$PATH) :

#!/bin/sh 
ls "[email protected]" 
+0

因此,它的长短之处在于,我不能将原始'; s'别名为'ls'来解决我输入错误的问题? –

+0

您无法定义_alias_,但可以在'$ PATH'中定义_function_(甚至可执行的脚本)。 – mklement0

+0

但是我不能在不引用/转义分号字符的情况下调用该函数? –