Unixファイルの命名規則[閉じる]

Unixファイルの命名規則[閉じる]

Unixでファイルの命名規則が何であるかを知りたいです。わかりませんが、従うべき一般的な命名規則があるようです。

たとえば、ファイル名を次のようにbackup指定したいと思います。part 2random

私はこうする必要があります:

backup_part2_random

または

backup-part2-random

または

backup.part2.random

質問が明確になりますように。基本的に私はUnixの哲学に固執する形式を選択したいと思います。

答え1

.foo.txt.

-orは、or_などの論理単語を区切るために使用されます。 Shiftキーを押す必要がないので、より良い(少なくとも標準のアメリカ英語PCキーボードでは)、他の人は空白のように見えるので好みます。my-big-file.txtmy_big_file.txt-_

したがって、あなたの例を理解すると、一般的なUnixルールに最も近いですbackup-part2-randombackup_part2_random


CamelCaseは通常Linux/Unixシステムでは使用されません。/binとでファイル名を確認してください/usr/bin。 CamelCase は Unix および Linux システムのルールではなく例外です。

NetworkManagerこれは私がCamelCaseを使用して考えることができる唯一の例であり、Mac開発者が書いたものです。多くの人がこれらの名前の選択について文句を言いました。Ubuntuでは実際にスクリプト名をnetwork-manager

たとえば、/usr/bin私のシステムでは次のようになります。

$ ls -d [A-Z]* | wc -w    # files starting with a capital
6
$ ls -d *_* | wc -w       # files containing an underscore
178
$ ls -d *-* | wc -w       # files containing a minus/dash
409

それにもかかわらず、大文字で始まるすべてのファイルはCamelCaseを使用しません。

$ ls -d [A-Z]*
GET  HEAD  POST  X11  Xvnc  Xvnc4

答え2

遠くさらに重要なことは、特定の規則が一貫して維持されることです。スタイルを選択して固執してください。

答え3

Unix / Linuxファイル名の規則についての私の考え:

  • Unix / Linuxファイルシステムは本質的に拡張の概念をサポートしていません。ファイル拡張子の概念は、ユーティリティまたは使用中のシェルなどで完全にサポートされているものとしてcp存在しますls。 NTFSでも同じだと思いますが、私が間違っている可能性があります。

  • 実行可能ファイル(シェルスクリプトを含む)には通常、任意の種類の拡張子はありません。スクリプトには、#!/bin/bashスクリプトを解釈する必要があるプログラムを識別するためのハッシュバン行(例:)があります。

  • 2文字の長さの実行可能ファイルは非常に重要です。したがって、実行可能ファイル名を 2 文字のファイル名として指定しないでください。また、すべてのファイルは、、、のように/etcで終わることがtab重要です。fstabmtabinittab
  • 時には.d特にディレクトリ名に追加されますが、/etcこれは普遍的ではありません(更新:https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux)
  • rc構成スクリプトまたはファイルで広く使用されており、プレフィックス(たとえばrc.local)またはサフィックス(.vimrc)が付けられます。
  • Unix / Linuxコミュニティは、拡張に3文字の制限を設けておらず、よく知られている拡張を適切に短縮したときに目を引いた。たとえば、.htmUnix / Linuxでは、HTMLファイルの末尾にを使用する代わりに.html
  • ファイルグループ内では、ファイル名は時々またはすべて大文字であるため、ディレクトリリストの先頭に表示されます。古典的な例はMakefileソースパッケージにあります。次の場合にのみこれを実行してくださいREADME
  • ~important_stuff~または、同じバックアップファイルまたはディレクトリを識別するために使用されます/etc~。多くのシェルが個別~$HOME
  • libライブラリファイルはzlibほぼ常に。
  • inetdによって呼び出されるスクリプトには時々先行タグがありますin.(例:)in.tftpd
  • 最後のzはvmlinuz圧縮を意味しますが、この名前の他のファイルは見たことがありません。

答え4

ファイル名が名前と拡張子で構成されるDOSとは異なり、Unixではファイル名は単なる文字列です。したがって、与えられたファイル名は完全に受け入れられます。

しかし、多くのプログラムは、さまざまなファイルタイプを区別するためにまだドットで始まるファイルサフィックスを使用しています。つまり、Apache Web サーバーはサフィックスを使用して、応答ヘッダーに正しい MIME タイプを設定します。

関連情報