2016-08-13 21 views

回答

2

你想要的行爲取決於特定於shell的擴展;即使當POSIX標準確實指定別名行爲(這是僅用於實現既XSI和用戶可移植性擴展殼的情況下),該允許名稱不需要包括任一-=

3.10 Alias Name

在shell命令語言中,一個單詞由可移植字符集中的下劃線,數字和字母組成,以及任何以下字符:'!','%',',','@'。

實現可能允許別名中的其他字符作爲擴展名。


也就是說,限定在bash別名時,--可以用來使以後的參數不被解析爲選項(每POSIX syntax guidelines條目#10):

alias -- -=date 

另一種選擇在實踐中可用bash(在3.2.57(1)和4.3.46(1)上進行測試,但POSIX標準不要求這些名稱支持)是定義函數:

$ =() { date "[email protected]"; } 
$ -() { date "[email protected]"; } 
$ = 
Sat Aug 13 18:12:37 CDT 2016 
$ - 
Sat Aug 13 18:12:08 CDT 2016 

同樣,這超越了由POSIX所需的組名稱:

2.9.5 Function Definition Command

函數定義命令的格式如下:

fname() compound-command[io-redirect ...] 

功能被命名爲fname; 應用程序應確保其名稱爲(請參見IEEE Std 1003.1-2001的第3.230節名稱的基本定義卷)。 實現可能允許函數名稱中的其他字符作爲擴展名。實現應爲函數和變量維護獨立的名稱空間。

3.230 Name

在外殼命令語言,從便攜式字符集只下劃線,數字和alphabetics組成一個字。名字的第一個字符不是數字。

...因此,POSIX和bash自己的文檔既不能定義,也不能在將來的版本中更改。

3

你可以有一個別名名爲-這樣的:

alias -- -=date 

我不知道的定義一個名爲=別名的任何方式。

+0

這似乎是一個無證的功能。 –

相關問題