ファイル名に予約されている文字

ファイル名に予約されている文字

ファイル名に許可されていない唯一の文字はという印象を受けましたが、名前に、、、、またはそのいずれかなどの文字を含む/ファイルを作成できないようです。例えば、*\":|<>

$ echo "*"
> *
$ touch "*"
> touch: setting times of `*': No such file or directory

ユーザーにファイル名を要求するシェルスクリプトを作成していますが、名前に無効な文字が含まれていないことを確認したいと思います。どこかにリストがありますか?

修正する:

ファイル名に「*」やその他の文字を許可しないFAT32ファイルシステム(USBスティック)でこれを行っていることに気づいていませんでした。うまくいかないのも当然です。すみません私のせいです! !

答え1

予約されたバイトは0(ASCII Nul)と0x2f(ASCII '/'、スラッシュ)だけであると確信しています。

「.」、「\」などの奇妙な内容を含むファイルを簡単に作成できます。あらゆる種類の奇妙なバイト値を含む「Unicodeファイル名」を考えてみましょう。

もちろん、同じディレクトリに重複したファイル名を持つことはできないため、通常はファイル名 "。"そして「..」は単純なユーザーが作成することはできません。カーネルのファイルシステム部分は、ディレクトリが作成されるとそれを生成します。

また、ほとんどのファイルシステムにはファイル名の長さに制限があり、空の文字列名でファイルを作成することはできません。

答え2

実際に一重引用符を付けてください。

例えばtouch '*'

またはFMを使用してください。

ここに画像の説明を入力してください。

詳細については、次を参照してください。Reserved characters and words このページから、少なくとも/ \ . ..許可されていません

関連情報