【问题标题】:How can i create a file with & sign at the end of filename in linux?如何在 linux 的文件名末尾创建带有 & 符号的文件?
【发布时间】:2020-08-28 11:38:31
【问题描述】:

我正在尝试使用触摸命令创建文件名 File& 名称,但它不是创建文件而是显示一些数字。 touch File& 但它的输出是 [1] 148916。 有人可以帮帮我吗?

【问题讨论】:

  • 试试man bash,寻找“转义字符”、“元字符”和“背景”。提示:如果您尝试创建这些文件,也会出现同样的问题:File;、File|, File>` 等。

标签: linux command


【解决方案1】:

& 对 shell 具有语义意义。要将其作为参数传递给touch,您必须引用它:

touch 'File&' # (or touch File'&', or touch File\&, or ...

& 是命令分隔符,类似于; 或换行符,bash 解释类似touch File& touch File2& touch File3& 的字符串的方式类似于解释touch File; touch File2; touch File3;。也就是说,它将运行 3 个命令。 ;& 之间的唯一区别是由 & 终止的命令是异步执行的。 (这就是您看到的那些数字所代表的内容。[1] 148916 告诉您创建了 pid 为 148916 的后台作业 1 来执行 touch 命令。)所以touch File& 使用参数File 执行命令touch在后台,而touch 'File&' 将参数File& 传递给在前台运行的touch 命令。

【讨论】:

    【解决方案2】:

    & 表示 & 左边的前面的命令将在后台运行。

    【讨论】:

      【解决方案3】:

      基本上,您正在创建一个名为 File 的文件,因为 & 代表一个控制运算符,它告诉 shell 在后台执行命令,以创建一个作业(命令或已启动并正在运行但尚未运行的任务) t 尚未完成,它由 shell 管理)。

      您可以输入jobs 命令来查看您的命令是否在后台运行。

      如果您想创建具有该特定名称的文件,请使用:touch 'File&' 或转义控制运算符 touch File\&

      【讨论】:

        最近更新 更多