ファイル(またはディレクトリ)名の区切り記号の適切なスタイル/プラクティス[非公開]


16

これがここに投稿する「正しい」質問であるかどうかは正確にはわかりません。私はおそらく、実際のカテゴリーの答え(機能するかしないかのどちらか、そしてそれだけです)よりも「意見」について多くを尋ねているでしょう。

私は、どの名前セパレーターが最もLinuxフレンドリー(より具体的にはBashフレンドリー)であり、同時に人間フレンドリーであるのか疑問に思っていました。

Mr. Foo BarFooは名、Barは姓)に関連するものを含むディレクトリを作成するとします。

Foo-Bar/」という名前は非常に便利です。-は「通常の」文字であり、エスケープする必要はありません。それを明確に示してFooおりBar、2つの独立したものです。

現在、「Foo.Bar」は少し複雑です。誰かがそれFoo.Barを実際にファイルであると考えるかもしれません(一見、特にカラーリングが有効になっている端末がない場合)。ここで、「Foo」はファイル名、「Bar」は拡張子です。

Foo Bar」を使用することもできますが、ディレクトリにアクセスするときは空白をエスケープする必要があり、親ディレクトリ(場所Foo Bar)の内容をリストし、そのリストをbash配列に入れたい場合は、空白は問題を引き起こすでしょう(たくさん)。よくない。

ブラケット()も多くの問題を引き起こします。また、コマンドを使用して問題を引き起こすには、エスケープする必要がありますscp

だから...質問は(最後に)です:ファイル名を一目で明確で意味のあるものにする必要があり、セパレータを使用する必要がある場合、何を使用しますか?



私はよくダッシュを使いますが、それは私がやっていることによって異なります。FooBarのように、ラクダケースを適切と考える人もいます。
klapaucius

回答:


14

短い答え:「Foo _-_ Bar」

長い答え:

見つけやすくするために、これが必要な領域で文字のシーケンスを使用する傾向があります。アイデアは、見つけやすいものを使用して、これが「_-_」や「 ___」。

私がこれを使用する実際的な例は、ファイル名にアーティストと曲のタイトルが含まれているmp3コレクションであり、場合によってはシーケンス番号も含まれます。そして、マジックシーケンスを使用してそれらを分離する場合、目とスクリプトの両方にとって簡単です。mp3の例は次のようになります。

  • 01_Blue_Man_Group _-_ Above.mp3
  • 02_Blue_Man_Group _-__ Time_to_Start.mp3
  • 03_Blue_Man_Group _-__ Sing_Along.mp3

これで、FooとBarが2つの論理的なもので混ざってはならず、Foo _-_ Barになり得る場合、これを例に変換できます。


2
また、この方法により、すでにダッシュ(または一般的な区切り記号)が含まれている名前を区別することもできます。
lynxlynxlynx

1
ex parseを正規表現するのも本当に素晴らしいです!:^(。+)_-_(。+)\。mp3 $
DanDan

人間がこれらのファイルを見るとすれば、これは良い答えです。本質的には、これを区切り文字列と見なします。複数文字の一意の区切り文字。VagrantではVAGRANTSLASH、ファイル名に文字列が使用されていることに気付きました。
-ThorSummoner

9

特別だとは思わないほど多くのキャラクターがあり、実際には特別であるため、とにかく特別なキャラクターを使用しています。これはまた、bash補完を使用する良い習慣になります。bash補完では、ファイル名のすべての特殊文字が自動的にエスケープされます。しかし、それはまた、スクリプトですべてをエスケープ/引用し、bashでマルチパート1ライナーをエスケープする良い習慣に私を置きます。

たとえば、単純な1ライナーの場合:

for file in *.txt; do something.sh "$file"; done

そうすれば、ファイルの1つにスペースまたは他の文字が含まdoれている場合でも、ループの一部は引き続き機能し、2つ以上のファイル名部分を逃さないため、意図しない副作用を引き起こす可能性があります。

私が遭遇するすべてのファイルのスペース/非スペースの命名を制御することはできないので、試してみると、おそらくどこかでいくつかのシンボリックリンクが壊れて、さらに意図しない結果が生じるため、すべてのファイル名/ディレクトリ名にスペースが含まれている可能性があります、そして、すべての変数を引用/エスケープして補正します。

そのため、ファイル名には任意の文字(スペース)を使用します。

ZFSデータセット名にスペースを使用することもあります。スペースを使用すると、使用しているNAS用のソフトウェアを作成する開発者の間でかなりの頭痛がします。

まとめ:スペースは無効な文字ではないため、スペースを使用しない理由はありません


6

-上記の理由から、ダッシュを使用します。アンダースコアはShiftキーを使用する必要があるため回避します。したがって、入力に少なくとも2倍の時間がかかります(また、見苦しいと思います)

私は他の何よりもスクリプトのファイル名に対してこれを行う傾向があります-スクリプトの目的を明確に識別することは私にとってより重要だと思います。ドキュメントファイルは単なる不活性データですが、スクリプトは誤用されると潜在的に危険です。


5

アンダースコア(_)を使用します。視覚的には消え、入力しやすく、特別ではありません。


4
私はそれらをよりugい -タイプするのが難しい(シフトキーを使用する必要がある)
-tshepang
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.