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

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

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

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

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

修正する:

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

ベストアンサー1

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

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

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

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

おすすめ記事