我想让modified
别名为' - '字符,但这不起作用,例如,
bash
这可以吗?如果我们在这, % alias "-"=date
bash: alias: -=: invalid option
怎么样?
`
答案 0 :(得分:3)
您可以使用名称为-
的别名,如下所示:
alias -- -=date
我不知道如何定义名为=
的别名。
答案 1 :(得分:2)
您想要的行为取决于特定于shell的扩展;即使POSIX标准 指定了别名行为(只有实现XSI和用户可移植性扩展的shell的情况),允许的名称集合不需要包括-
或=
:
在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节,名称)。 实现可能允许函数名中的其他字符作为扩展名。实现应为函数和变量维护单独的名称空间。
在shell命令语言中,单词由可移植字符集中的下划线,数字和字母组成。名字的第一个字符不是数字。
...因此,既不由POSIX定义,也不由bash自己的文档定义,在将来的版本中可能会有所变化。