可以' - '字符,因为是bash中的别名?

时间:2016-08-13 21:36:23

标签: bash

我想让modified别名为' - '字符,但这不起作用,例如,

bash

这可以吗?如果我们在这, % alias "-"=date bash: alias: -=: invalid option 怎么样? `

2 个答案:

答案 0 :(得分:3)

您可以使用名称为-的别名,如下所示:

alias -- -=date

我不知道如何定义名为=的别名。

答案 1 :(得分:2)

您想要的行为取决于特定于shell的扩展;即使POSIX标准 指定了别名行为(只有实现XSI和用户可移植性扩展的shell的情况),允许的名称集合不需要包括-=

  

3.10 Alias Name

     

在shell命令语言中,单词由便携式字符集中的下划线,数字和字母组成,并且包含以下任何字符:'!','%&#39 ;,',',' @'。

     

实现可能允许别名中的其他字符作为扩展名。

也就是说,在bash中定义别名时,--可用于使后续参数不被解析为选项(每POSIX syntax guidelines条目#10):

alias -- -=date

bash实际可用的另一个选项(在3.2.57(1)和4.3.46(1)上测试,但POSIX标准不要求这些名称支持)是定义函数:

$ =() { date "$@"; }
$ -() { date "$@"; }
$ =
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

     

在shell命令语言中,单词由可移植字符集中的下划线,数字和字母组成。名字的第一个字符不是数字。

...因此,既不由POSIX定义,也不由bash自己的文档定义,在将来的版本中可能会有所变化。