命令行中的“@”是什么意思?

时间:2012-10-23 21:59:33

标签: unix command-line cat

在某些内容之前放置“@”会产生什么影响(比如包含Java运行命令的类路径条目的文件的路径)?

我知道这与文件内容有关,但您可以想象在Google上搜索它有点困难。我无法找到谈论它的联机帮助页。

3 个答案:

答案 0 :(得分:1)

{1}}字符在Unix命令行中没有一般含义。它有一些受欢迎的公用事业使用。以@中的@开头的命令告诉Makefile在执行之前不要回显该行。 GNU Autoconf会将make - 括号变量(例如@)替换为@srcdir@发现的替换变量。

答案 1 :(得分:1)

在不同的程序中它可能意味着不同的东西。作为约定,命令行中的@file可以解释为:

  

从文件中读取命令行选项。读取的选项将被插入   原始@file选项的位置。如果文件不存在,或者不能存在   阅读,然后该选项将按字面处理,而不是删除。   文件中的选项由空格分隔。一个空白字符   可以通过包围整个选项包含在选项中   单引号或双引号。任何角色(包括反斜杠)   可以通过为要包括的字符添加前缀来包括   反斜杠。该文件本身可能包含其他@file选项;任何   这些选项将以递归方式处理。   from ld docs for @file

答案 2 :(得分:1)

来自Bash Reference Manual

  

shell专门处理几个参数。这些参数可能   只被引用;不允许分配给他们。

     

(...)

     

@

     

从一个开始扩展到位置参数。当。。。的时候   扩展发生在双引号内,每个参数扩展为a   单词。也就是说,“$ @”相当于“$ 1”“$ 2”....如果   双语扩张发生在一个词内,扩展了   第一个参数与原始的开头部分连接在一起   单词,并将最后一个参数的扩展与最后一个参数连接起来   原始单词的一部分。没有位置参数时   “$ @”和$ @扩展为空(即,它们被移除)。

     

(...)

您可以在任何程序的参数中使用@(at-sign)而无需转义。

如果您必须在参数中传递此$@之类的内容 - 您必须仅转义$(美元符号)。