
今週試験があったのですが、質問の 1 つに次のようなものがありました (正解は 1 つ)。
ファイル名には次の文字を含めることができます:
a)
\
b)
/
c)
?
d)
!
問題なさそうだったので、選択しましたc) ?
。帰宅後、自分のマシン (Ubuntu 14.04) でテストしたところ、ファイルが正常に作成されました。準備完了の計算機では、正解は とマークされていますd) !
。
試験は Windows 専用であることは知っていましたが、テスト用紙にはプラットフォームが指定されていませんでした。
\
文字は/
ファイル名ではサポートされていないことは明らかです。しかしオペレーティング システムにそれらを強制的に許可させる方法はありますか?
\
および文字もサポートされていることを証明できたら本当に嬉しいです/
。
答え1
ファイル名に使用できる文字を考慮する場合、オペレーティング システムに関連する制限とファイル システムに関連する制限という 2 つの制限要因があります。この質問では、Linux と ext4 の最新バージョンについて話しているものと仮定します。
Linux では、ファイル名に 2 つの文字のみが許可されています。/
はパス区切り文字であるため、 と\0
(ASCII NUL) は cstring を終了するためです。これに加えて、特殊な名前である.
と..
も、ナビゲーション ハード リンクとして使用するためにファイルシステムによって予約されています。
質問に記載されている他の文字が許可されていることは簡単に証明できます。
$ touch '\' '?' '!'
$ ls
! ? \