【发布时间】:2020-08-28 11:38:31
【问题描述】:
我正在尝试使用触摸命令创建文件名 File& 名称,但它不是创建文件而是显示一些数字。
touch File& 但它的输出是 [1] 148916。
有人可以帮帮我吗?
【问题讨论】:
-
试试
man bash,寻找“转义字符”、“元字符”和“背景”。提示:如果您尝试创建这些文件,也会出现同样的问题:File;、File|,File>` 等。
我正在尝试使用触摸命令创建文件名 File& 名称,但它不是创建文件而是显示一些数字。
touch File& 但它的输出是 [1] 148916。
有人可以帮帮我吗?
【问题讨论】:
man bash,寻找“转义字符”、“元字符”和“背景”。提示:如果您尝试创建这些文件,也会出现同样的问题:File;、File|, File>` 等。
& 对 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 命令。
【讨论】:
& 表示 & 左边的前面的命令将在后台运行。
【讨论】: