我試圖讓bash
別名「 - 」字符,但是這並不能正常工作,例如,' - '字符可以作爲bash中的別名嗎?
% alias "-"=date
bash: alias: -=: invalid option
才能做到這一點?如果我們在這,alias '='=date
怎麼樣? `
我試圖讓bash
別名「 - 」字符,但是這並不能正常工作,例如,' - '字符可以作爲bash中的別名嗎?
% alias "-"=date
bash: alias: -=: invalid option
才能做到這一點?如果我們在這,alias '='=date
怎麼樣? `
你想要的行爲取決於特定於shell的擴展;即使當POSIX標準確實指定別名行爲(這是僅用於實現既XSI和用戶可移植性擴展殼的情況下),該允許名稱不需要包括任一-
或=
:
在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節名稱的基本定義卷)。 實現可能允許函數名稱中的其他字符作爲擴展名。實現應爲函數和變量維護獨立的名稱空間。
在外殼命令語言,從便攜式字符集只下劃線,數字和alphabetics組成一個字。名字的第一個字符不是數字。
...因此,POSIX和bash自己的文檔既不能定義,也不能在將來的版本中更改。
你可以有一個別名名爲-
這樣的:
alias -- -=date
我不知道的定義一個名爲=
別名的任何方式。
這似乎是一個無證的功能。 –