私のシステムは
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}