使用分号字符创建shell别名
问题描述:
我注意到我倾向于输入ls
作为;s
,所以我决定创建一个别名,以便不会抛出错误,而是运行命令I意思。使用分号字符创建shell别名
但是,知道分号字符在shell脚本/命令中有意义,是否有任何方法允许我使用该分号键创建别名?我试过以下无效:
alias ;s=ls
alias ";s"=ls
alias \;=ls
是否有可能使用分号作为shell别名中的字符?我如何在ZSH中这样做?
答
首先:考虑不同的解决您的问题 - 战斗壳语法这种方式是自找麻烦。
-
据我所知,,而你可以定义这样的命令 - 尽管不能与别名 - 只有这样,才能通话它引述,例如如
\;s
- 这违背了目的;阅读技术细节。的别名将无法正常工作:虽然
zsh
允许你定义它(其中,可以说,它不应该),这将需要呼叫它很机制 - 引用 - 也是绕过别名的机制,因此可阻止调用。你可以,但是,只要定义功能(仅
zsh
),或在您的$PATH
一个脚本(在zsh
作品以及在bash
,ksh
和dash
),你调用它报价(例如,如\;s
或';s'
或";s"
),其中击败目的。
为了记录在案,这里是命令的定义,但同样,他们只能被调用报价。
功能(适用于仅zsh
;发生在初始化文件如~/.zshrc
):
';s'() { ls "[email protected]" }
可执行脚本;s
(在dash
作品,bash
,ksh
和zsh
;发生在目录中你$PATH
) :
#!/bin/sh
ls "[email protected]"
因此,它的长短之处在于,我不能将原始'; s'别名为'ls'来解决我输入错误的问题? –
您无法定义_alias_,但可以在'$ PATH'中定义_function_(甚至可执行的脚本)。 – mklement0
但是我不能在不引用/转义分号字符的情况下调用该函数? –