オペレーティングシステム – ファイル名にスペース文字を使用しない技術的な理由は何ですか?

file-management filenames operating-systems

私の知っている人が今日、ファイル名にスペースを使わない傾向にある人たち、例えば NamingThingsLikeThis.txt — 最近のほとんどのオペレーティングシステムではファイル名にスペースを使うことをサポートしているにもかかわらず

(適切な)スペースのないファイル名を見るのが一般的な技術的な理由があるのでしょうか?もしそうだとしたら、ファイル名の中のスペースが避けられたり、推奨されない技術的な理由は何ですか?

私が思いつく最も明白な理由、そして私が一般的にそれを避ける理由は、そのようなファイルを扱う際にコマンドラインで余分な引用符が必要とされることです。他に重要な技術的な理由はありますか?

  78  Chris W. Rea  2009-08-25


ベストアンサー

ファイル名に含まれる空白文字は、コマンドラインやスクリプトの多くの文脈で、実行中のコマンドの区切り文字のように見えないように、適切にエスケープされていることを確認するように注意しなければなりません

たとえそのファイル/ディレクトリ/何かがそのような状況で使われることはないと確信していても、そこには置かない方が安全です

それと古い習慣はなかなか消えない

69  David Spillett  2009-08-25


コマンドラインや古い習慣についての他の回答の他にも、スペースを含むファイル名を扱う際に特別な注意が必要なネットワークプロトコルがたくさんあります

(ウェブサイトから “Product List.pdf “をダウンロードしようとして “Product “という名前だけのファイルになってしまったことがあるなら、あなたはこれに噛まれてしまったことになるでしょう。)

34  Stobor  2009-08-25


多くの理由は歴史的なものです。だからと言って今の意味がないわけではありません

移植性の問題

ファイル名を付ける際には、他の(ファイル)システムがそのファイル名をどのように扱うかを考慮する必要があるかもしれません。ファイル名の中の文字は、あなたのシステムでは問題ないかもしれませんが、他のシステムでは問題になるかもしれません

だから、古いシステムから簡単にファイルにアクセスできるようにしたい可能性が少しでもある限り、安全な文字だけを選ぶだろう。これは、あなたが周りに保持していた古いリカバリシステムにブートするか、または最近のWindowsのバージョンがまだ何らかの形でMS-DOSをベースにしていることへの恐怖を含む可能性があります

Length

ファイルシステムは、ファイルが持つことができる長さを制限することがあります。これは、MS-DOS が 8.3 ファイル名 に制限されていた時代には、さらに深刻でした。そのため、スペースを残すことで、より意味のある文字を名前に入れることができるようになりました

他のいくつかのファイルシステムも、ファイル名の長さに厳しい制限を設けています。ウィキペディアには、ファイルシステムの比較に表があります

Reserved Characters

また、MS-DOSではスペース文字を予約文字として定義していました。これは、スペース文字がFATのパディングに使われていたためです。さらに、MS-DOS はシェルのエスケープシステムを提供していませんでした

Command-Line Interpretation

私が知っているほとんどのコマンドラインでは、スペース文字をパラメータの区切り文字として使用していますファイル名を適切にエスケープすることを怠ると、ファイル名の一部が呼び出したいアプリケーションのパラメータとして解釈されてしまい、悲惨な結果になることがあります

の違いを考えてみましょう

rm foo bar

and

rm "foo bar"

上のリンク先のWikiPediaの記事では、コマンドを適切にエスケープするために、missingによって導入された曖昧さを指摘しています

曖昧さは、最初にファイル名やディレクトリ名にスペースを埋め込むことを禁止する (例えば、アンダースコア ‘_’ で代用する) か、コマンドラインインタプリタやこれらのパラメータを引数に取るプログラムがサポートしている場合には、引用符文字の間にスペースを埋め込んだ名前を囲むか、スペースの前にエスケープ文字、通常はバックスラッシュ (‘バックスラッシュ’) を使用することで防ぐことができます。例えば、以下のようになります

Long path/Long program name Parameter one Parameter two ...

は曖昧です(”プログラム名 “はプログラム名の一部なのか、それとも2つのパラメータなのか)

Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...

And Long path/Long program name Parameter Parameter\ one Parameter two

は曖昧ではありません

ユニフォームリソースロケータ(URL)

URL を使用してファイルの場所を記述しようとする場合は、スペースをエスケープする必要があります

文字はいくつかの理由で安全ではない可能性があります。スペース文字が安全でないのは、URLが転写されたりタイプセットされたり、ワープロプログラムの処理を受けたときに、重要なスペースが消えたり、取るに足らないスペースが入ったりする可能性があるからです

ソースは以下の通りです。RFC1738

そのため、スペースを代わりに %20 に置き換えなければなりません。これにより、URL のファイル名の部分が読みにくくなりますので、そもそもそれを避けるようになります

31  Der Hochstapler  2012-10-06


ウェブ上のファイル名にスペースがエンコードされたり、%20に変換されたりするため、サイトの資産管理が難しくなる可能性があります

Image 1.pngImage%201.pngがあると混乱します。代わりにImage001.pngを使った方が簡単です

これは、コマンドラインのエスケープシーケンスと同じカテゴリーに属します

27  user7012  2009-08-25


コマンドラインで扱うとき、古いOSを使うとき、異なるOSでコンパイルされるプログラムを書くときなど、スペースが問題になることがあります。私はダスクの方が好きです

しかし大抵は老後からの習慣の問題です捨てるほどのプロの理由があるとは思えません


追加のメモですが、おそらく関連性はありませんが、それにもかかわらず、ここに書いておきます。ファイル名にスペースをつける人はたいていそのことをあまり考えていません。 そして、”Dear Sir or Madamam, I’m writing you this letter to inform you of yo.doc “という名前のファイルよりも悪いものは何もありません

スペースだけではありません – ファイルの長さも何かのためにカウントされ、IMHOでは、それは、それが言ってみましょう、30文字よりも長くなるべきではありません。長いファイル名のために、内部にスペースを持つファイル名はまた、古いOSの下で、Winと*nixのプラットフォームの間で読み取る必要があるCDの、DVDの、およびそのようなものを記録するときに祝福されています

6  Rook  2009-08-25


タイトルとURLをコピーしました