Unixファイルの命名にはスペースを使用すべきではないと言われています。ファイル名(すなわち、中に大文字を使用しないように良い理由がありますFile_Name.txt
対file_name.txt
)?それとも個人的な好みの問題ですか?
Unixファイルの命名にはスペースを使用すべきではないと言われています。ファイル名(すなわち、中に大文字を使用しないように良い理由がありますFile_Name.txt
対file_name.txt
)?それとも個人的な好みの問題ですか?
回答:
人々は、Unixファイルの命名にスペースを入れるべきではないと言う。
人々は多くのことを言います。混乱する可能性のあるツールがいくつかありますが、スペースが巨大な消費者専有OS企業によって増殖し、現在では避けることができないため、現時点ではそれらの数が少ないことを願っています。
スペースを使用すると、コマンドラインなどでファイル名を指定するのが難しくなります。それについてです。* nixシステムでカテゴリ的に禁止されている唯一の文字はNUL(ご心配なく、キーボードや他の人のものではありません)と/
、パス区切り文字です。1 それ以外は何でもあります。個々のパス要素(ファイル名)は255 バイトに制限され(拡張文字セットを使用している場合は複雑になる可能性があります)、4 KiBへの完全なパスです。
または、これは単なる個人的な好みの問題ですか
そうだと思います。ほとんどのDEのは、あなたがに大文字のディレクトリのスルーを作成するように見える$HOME
(Downloads
、Desktop
、Documents
- D
それについての奇妙な何もない、非常に人気があります)。など、それらでは大文字、と非常にありふれた伝統的なファイルもあります.Xclients
とは.Xauthority
。
最初に物事を大文字にすることの価値は、辞書式にリストされた場合、それらは小文字のものよりも前に来ることです-少なくとも、多くのツールでは、ロケールの対象となります。
私はキャメルケース(別名キャメルケース)のファンであり、ファイル名などでそれを使用しています/home/goldilocks/blueSuedeShoes
-そこに何があるか気にしないでください。間違いなく個人的な好みの問題ですが、それはまだ私を悲しませます。
Javaクラス名には大文字が含まれているため、Javaクラスファイルには大文字が含まれる傾向があります。そしてもちろん、NetworkManager
私たちの一部が好む場合でも、忘れないでください。
1.はるかにPOSIXによって推奨され、区切りがあり、「ポータブルファイル名文字セット」しないスペースが含まれる-しかし、それは含まれない大文字が! POSIX は、同じドキュメント内の他の場所の「スラッシュ文字とヌルバイト」に関するより一般的な制限も指定しています。これは、長年の慣習的な慣行を反映しているか、反映されています。
README
SとMakefile
Sのように。
ファイル名の大文字を避ける1つの理由は、Unixでのソート順では大文字と小文字が区別されるため、大文字で始まるファイルは順不同で表示されるためです。それMakefile
が通常、大文字を使用して名前が付けられている理由ですM
-トラフをスクロール/スキップせずに、最初に見たいファイルの1つですa-l
。
これは、ファイル名の面ではるかに悪いことができると言いました:
-
多くのプログラムがファイル名の代わりにコマンドラインオプションとしてそれを見るので、ファイル名を開始することは問題を引き起こすかもしれrm -r
ません(例えば、という名前のファイルを削除しません-r
)。.
と、多くのユーティリティやシェルグロビングから隠されます(たとえばrm *
、などのファイルは削除されません.config
)|<>*?
、さらにnewline
は印刷不可能な文字を使用することは技術的には可能ですが、スペース文字に類似したスクリプト/プログラムを壊す可能性があります。違いは、スペース文字が頻繁に使用されるため、プログラマはそれに対してプログラムをテストする傾向がありますが、人気の低い文字は多くの場合テストされないままです。rm *
などのファイルを削除しません.config
か?
Makefile
及びREADME
その完璧な例です。また、文字が名前の最初の文字でない場合、この効果は無視できるため、camelCaseを使用する場合は大した問題ではないことに注意してください。確かに、あなたはanOctagon
前に見て驚くかもしれませんangle
が、少なくとも彼らはリストに一緒にいるでしょう。
Windows環境とインターフェイスする場合は、Windowsがすべてを小文字にするため、大文字を使用しないでください。多くの場合、これは逆の問題です。へのリンクはWindowsでPage_2.html
は見つかりますpage_2.html
が、Unixでは失敗します。
NUL
、/
禁止されています。
cat > Foo
fileが上書きされますfoo
。この動作は、ext *などの大文字と小文字を区別し、大文字と小文字を区別するファイルシステムに慣れている場合、予期せず混乱する可能性があります。
\0
and 以外のオクテットのストリーム/
、大文字と小文字を区別)。少なくともそれは私がそれを覚えている方法です。しかし、それは一種の混乱であることに同意します。...におけるさらなる制限があります
回避キャップに1つの理由は、あるbash
のS tabcompletionは、大文字と小文字を区別(少なくともデフォルト) -これではまだ、私は目の前で終わるたびに私をトリップbash
デフォルトの設定では。もちろん、他の一般的なシェルもありますが、これbash
は多くのOSでデフォルトのログインシェルであるという事実と相まって、デフォルトでは大文字と小文字が区別されることがよくあります。ここでは、すべて小文字のファイル名を使用すると単純化されます。
echo set completion-ignore-case On >> ~/.inputrc
少なくともあなた自身のシステムでは少し助けになります。
Foo
後でタイプcat f
(Tab)を入力すると、失敗します。ただし、を入力しても同じことが起こりますcat foo
。cat Foobar
またはcat Fu
、名前を正しく覚えていないファイルにアクセスできないという事実は、オートコンプリートとはまったく関係がありません。
NL_Derekはこのワームの缶を開けましたが、適切に表現していなかったので、これを言います。
これは、使用大文字にOKですが、あなたは(同じディレクトリ内)のファイル作成を避ける必要があります異なるのみ場合によって例えば、File_Name.txt
および file_name.txt
ので、
FILENA~1.TXT
し、FILENA~2.TXT
-タイプdir /x
の短い名前が(もしあれば)どのような長い名前で行くかを確認します。)cmd1 > foo
cmd2 > Foo
cmd2
技術的な理由は別として、これには実用的な側面があります。小文字を使用すると、grep -iまたはLocate -iを使用するのが好きでない限り、検索が容易になります。storageNYCDCPrimaryのように大文字と小文字の単語の文字列を使用する必要がある場合、camelCaseでさえ混乱する場合があります。そのため、storage_nyc_dc_primaryのように、小文字に固執し、読みやすくするためにアンダースコアまたはハイフンでそれらをペッパー処理するのが最善であると思います。
storageNycDcPrimary
とStorageNycDcPrimary
も読むのがおかしいです。
私は考えるん、最善の方法であるために、大文字の使用を避けるファイル名に、スペースを。
同意しないと言う人もいますが、それは問題であり、私が宗教的信念と呼んでいるものです。議論し同意するのは難しいです。同意しない人は、ほとんどのツールは現在、首都とスペースに優しいように修正されていると言います。それらは正しいですが、これは問題ではありません。
正しい質問は、ファイル名に大文字とスペースをどれだけ使用する必要があるかです。この質問に対して、私がJavaでプログラミングしている場合を除いて、答えはほとんどの場合です:ファイル名に大文字とスペースは必要ありません。すべてのスペースをアンダースコア(_
)またはマイナス記号(-
)に置き換えます。そのため、他の宗教のいくつかに反して、キャメルケース(別名:camelCase)は使用していません。
多くの人々は、それを行うことと教えるために私にでたらめを呼びかけました-一部の人はまだそうしています-一部の人は資本/空間に優しいツールではなく、私が正しいと私に耳を傾けるべきだと言って来ました。 好きなことをしてください。また、ファイル名に大文字とスペースを使用する場合は、誤って記述されたツールに決してつまずかないことを願っています。ただし、このようなツールにつまずくと、うまくいけば修正するのが難しくなく、ビジネスやコストや時間や費用もかかりません。しかし、最終的に悪い影響を与えるようになった場合、ファイル名に大文字とスペースを使用することは悪い習慣であると過去に言ったことを覚えているでしょう。
最後に、すべての問題を回避する場合、ファイル名に特殊文字は使用しません(小文字、数字、アンダースコア、マイナス[1]のみ)。この不要な文字リストには、すべての非ASCII文字(はい、フランス語、およびその他の英語以外の人々-と私はそれらの1人です-なし:à、â、ä、ç、é、...、ö、æ、æ、œ 、...)。これは、loginやpasswordを含む他の多くのものにも拡張されます。確認済みのシステム管理者によって記述されていないbashスクリプトによって処理されるログインまたはパスワードに引用符または二重引用符('
または"
)を入力すると、どうなるかを推測できます。
[1]:多分我々はそれを拡張することができ~
、@
、#
およびいくつかの他、しかし(...はい、私はemacsのファイルについて知っている)、これはトラブルを探しています。