web-dev-qa-db-ja.com

Linux / Windows / Unix / ...ファイル名:どの文字を使用できますか?エスケープされていないものはどれですか?

どの文字が許可され、どの文字が異なるオペレーティングシステムのコマンドラインでエスケープする必要がありますか?

43

File Names に関するWikipediaの記事でファイル名の文字についての議論があります。

このエッセイは参考になるかもしれません: Fixing Unix/Linux/POSIX Filenames

この記事では、OS XとWindows XPを比較しています。 XとXP:ファイル名に使用できない文字 (PDF、pp約64〜66を参照)。

$ 1,000アレックスのファイル名に含めるべきではないもの

unエスケープする必要がある文字がわかりませんが、Linuxでは、特別な意味を持つ可能性のある文字をエスケープすることはおそらくお勧めできません「n」(改行)、「t」(タブ)などですが、一般にファイル操作では問題ありません。おそらく、「エスケープされていない」ではなく、「エスケープされた」ことを意味します。最も一般的なものは、スペース、「>」、「<」など、シェルが解釈するものです。それらの説明については、リンクした記事のいくつかを参照してください。

* nixのファイル名に使用できない文字は、NUL/だけです。 Windowsでは、NUL:、および\のみが完全に許可されていませんが、多くのアプリはこれをさらに制限し、?*+、および%

シェルで解釈されないようにする必要がある場合を除いて、ファイル名の文字をエスケープしない必要.

Windowsでエクスプローラを使用して次の文字のいずれかを使用してファイルを作成すると、その文字は許可されないというメッセージが表示されます。

\ / : * ? " < > |

良いリファレンスはここにあります:

ファイル、パス、名前空間の命名
http://msdn.Microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

マイクロソフトはさらに述べています:

"... Windowsベースのデスクトッププラットフォームでは、無効なパス文字には、ASCII/Unicode文字1〜31、および引用符(")、小なり(<)、大なり(>)、パイプ(|)、バックスペースが含まれる場合があります。 (\ b)、null(\ 0)およびタブ(\ t)。 "

http://msdn.Microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx

14
Greg Askew

Linuxおよびその他のPOSIX互換システムでは、「/」はディレクトリ区切り文字であるため予約されており、「\ 0」(NULL文字)は文字列の終わりを示します。それ以外はすべて許可されます。

5
janneb