touch:缺少文件操作数,文件名包含哈希#

touch:缺少文件操作数,文件名包含哈希#

我的系统是

Kernel: 5.3.0-26-generic x86_64 bits: 64 Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia 

触摸版是touch (GNU coreutils) 8.28

当给出以下命令时 -

$ touch #a{1..10}

它说 -

touch: missing file operand
Try 'touch --help' for more information.

这里有什么问题呢?

答案1

(使用set -xxtrace)查看实际运行的命令)

$ set -x
$ touch #a{1..10}
+ touch
touch: missing file operand
Try 'touch --help' for more information.
$ touch a{1..10}
+ touch a1 a2 a3 a4 a5 a6 a7 a8 a9 a10

#单词开头的井号使该行的其余部分成为注释。你需要引用它:

$ touch "#"a{1..10}
+ touch '#a1' '#a2' '#a3' '#a4' '#a5' '#a6' '#a7' '#a8' '#a9' '#a10'

或者在 Bash 中,您可以使用shopt -u interactive_comments完全禁用处理注释。

答案2

这里的问题是您想要#在文件名中包含 ,对于 shell 来说是“注释”指示符。因此,后面的所有文本未逃脱的 #被忽略,并且您的命令抱怨缺少操作数。

一种可能的解决方案是将文件名的该部分括在引号中,如下所示

~$ touch "#a"{1..10}

相关内容