t\ime
或者\cd
(或"tim"e
或'cd'
或${-##*}time
或${-+time}
和报价,你可以想到的扩张最终会解析到的所有其他组合time
或cd
)是:另一种方式来写cd
和time
。
但是,这最终将解决cd
或time
在以后的shell语法解析和解释时解决。特别是,这在发生外壳关键字识别和别名替换之后很久就发生了。
因此,在外壳程序以其语言查找关键字时,它并没有被识别ti\me
为time
外壳程序关键字。因此:
ti\me echo test
Shell会将其识别为简单命令,而不是time
关键字后跟简单命令。
然后在报价ti\me
会(这里反斜杠被引用的处理m
,并不需要引用反正引用角色被删除,你会得到字符time
)和time
命令将查到的像任何其他命令(在内建命令列表,中的函数和可执行文件$PATH
。最有可能在/bin/time
此处)
对于cd
,cd
shell语言中没有关键字,只有cd
内置命令(优先于your /usr/bin/cd
)。但是,如果您确实定义了别名cd
(如alias cd=pushd
),请再次指定。由于别名替换是在替换引号之前很早完成的,如果您有一个别名cd
而不是一个别名\cd
(请注意,没有太多的shell允许在别名中使用反斜杠),则可以这样写:
\cd dir
您要确保cd
别名没有被替换。
总之,引用了命令名或任何部分防止它被看作是一个外壳关键字(关键字是东西喜欢while
,for
,if
,{
... time
是一个关键字一些只弹),并绕过你可能有它的别名。
但是,它不会强制该命令解析为中的可执行文件$PATH
,该命令仍会首先在函数(可以通过执行此操作来解决command time cmd...
)和内建函数(可以通过执行来解决env time cmd...
,尽管我不知道)中进行搜索。具有内置time
命令的外壳)。
请注意,报价也可以对特殊内建的行为的影响typeset
/ declare
/ export
/ local
...家庭在一些贝壳。请参见局部变量赋值是否需要引号?有关详细信息。