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 -x()を使用してください。)xtrace

$ 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'

shopt -u interactive_commentsまたは、Bashではコメントの完全な無効化に使用できます。

答え2

ここでの問題は、#シェルの場合、ファイル名に「コメント」インジケータを含めようとすることです。したがって、次のテキストはすべて脱出していない #無視され、命令はオペランドの欠落について文句を言います。

考えられる解決策の1つは、次のようにファイル名の対応する部分を引用符で囲むことです。

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

関連情報