Unixでのファイルの命名規則は何ですか?私はこれについてはわかりませんが、おそらく従うべき普遍的な命名規則があると思いますか?
たとえば、ファイルに名前を付けたい:backup
with part 2
およびrandom
私はそれをこのようにすべきですか:
backup_part2_random
OR
backup-part2-random
OR
backup.part2.random
質問が明確であることを願っています。基本的には、Unixの哲学に準拠した形式を選択したいと思います。
_.
_は、ファイルタイプ拡張子を区切るために使用されます。 _foo.txt
_。
_-
_または__
_は、論理語を区切るために使用されます。 _my-big-file.txt
_または時々_my_big_file.txt
_。 _-
_はShiftキーを押す必要がないので(少なくとも標準的な米国英語のPCキーボードでは)、より良いです。他の人は__
_を好みます。
したがって、私があなたの例を理解していれば、_backup-part2-random
_または_backup_part2_random
_が通常のUnixの規則に最も近いでしょう。
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
_
そしてそれでも、大文字で始まるファイルはどれもキャメルケースを使用していません:
_$ ls -d [A-Z]*
GET HEAD POST X11 Xvnc Xvnc4
_
Far特定の規則が一貫していることがより重要です。スタイルを選び、それに固執する。
Unix/Linuxのファイル名規則についての私の見解:
Unix/Linuxファイルシステムは、本質的に拡張機能の概念をサポートしていません。ファイル拡張子の概念は、cp
、ls
、または使用しているシェルなどのユーティリティによってサポートされるものとして完全に存在します。 NTFSでも同様だと思いますが、間違いかもしれません。
シェルスクリプトを含む実行可能ファイルには、通常、いかなるタイプの拡張子もありません。スクリプトには、どのプログラムがそれを解釈する必要があるかを識別するハッシュバング行(つまり、#!/bin/bash
)があります。
tab
、fstab
、mtab
のように、inittab
で終わる/etc
のファイルも非常に重要です。.d
では、/etc
がディレクトリ名に追加されることがありますが、これは広く普及していません(UPDATE: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in -linux )rc
は、構成スクリプトまたはファイルの前に追加する(rc.local
など)かサフィックス(.vimrc
)に広く使用されます.htm
を使用しないでください。.html
を使用してください。Makefile
です。これは、README
のようなものに対してのみ実行してください。~
は、important_stuff~
または/etc~
のように、バックアップファイルまたはディレクトリを識別するために使用されます。多くのシェルは、単一の~
を$HOME
に拡張します。lib
で始まります。例外はzlib
で、おそらく他にもいくつかあります。in.
などの先頭のin.tftpd
でタグ付けされることがあります。vmlinuz
の末尾のzは圧縮されていることを意味しますが、この方法で名前が付けられた他のファイルを見たことはありません。UNIXでは、ファイル名は名前と拡張子から構成されるDOSとは異なり、ファイル名は単なる文字列です。したがって、任意のファイル名は完全に受け入れられます。
ただし、多くのプログラムは依然としてドットで始まるファイルサフィックスを使用してさまざまなファイルタイプを区別しています。つまり、Apache Web Serverはサフィックスを使用して応答ヘッダーに正しいMIMEタイプを設定しています。
2つの考え:
の中に Naming Variables, Functions, and Files
GNUコーディング基準 のセクション==
アンダースコアを使用して名前の単語を区切り、EmacsのWordコマンドがその中で役立つようにします。小文字に固執する。
IMOが「_
emacs "は少し古くなっているように見えるので、それでも彼らの「標準」文書にはあります。
少しの間、LinuxカーネルがLinuxプロジェクトのすべてで終わりのすべての*であり、そこで使用されている規則が「標準」の規則と見なすことができるものであることに全員が同意すると仮定します。
grep
- ing Linuxカーネルのソース 以下が見つかります:
興味深いことに、 source for git は85%の場合はダッシュ、3.8%の場合アンダースコア、11.1%両方。
選択は明確で、議論されています。 ;)
個人的な意見:私は美的理由とシフトの主な理由のためにダッシュを使用します。チームで作業している場合は、投票してください。しかし、言われたことを繰り返すために、一貫している。
*または「be_all and end_all」(必要な場合)
ファイル名に使用してはいけない文字:
| ; 、! @#$()<>/\ "'`〜{} [] = +&^
名前を読みやすくするために使用する必要がある文字区切り文字:
_-。 :
(ただし、「:」は特別な意味を持つ場合があります)
他の人が言ったことに加えて、アクセント付きの文字と多くの特殊文字はファイル名で合法であるが、次のシナリオのいずれかで問題を引き起こす可能性があると私は言うだけだ:
...
英数字のファイル名に固執する。スペースを使用しないか、スペースをアンダースコア(_)に置き換えます。ファイル名の句読点をピリオド(。)、下線(_)、およびハイフン(-)に制限します。通常、ファイル名は小文字ですが、ファイル名に複数の単語がある場合はキャメルケースを使用します。
ファイルのタイプを示す拡張子を使用します。実行ビットはプログラムを示すために使用され、シェルはさまざまなタイプのプログラムの実行方法を知っているため、プログラムは拡張機能を必要としません。シェルスクリプトの場合は(.sh)、Perlスクリプトの場合は(.pl)が一般的ですが、必須ではありません。 Windows実行可能拡張子.bat、.com、.scr、および.exeは、UNIX上のWindows実行可能ファイルを示します。
標準を選択し、それに固執します。しかし、それを避けても問題はありません。
非表示(またはドット)ファイルには、ピリオドで始まる名前があります。これらは通常、ディレクトリリストには表示されません。リストにドットファイルを含めるには、「ls -a」を使用します。
使用する -
または_
ファイルに名前を付ける_
関数用.
拡張機能用
cat << EOF > foo-bar.sh
foo_bar() {
echo baz
}
EOF
規則の1つは、単語間の区切り文字としてスペースを置き換えるために "_"を使用することです。スペースの代わりに他の文字を使用することもできますが、「-」と「。」の従来の使用法はやや強力です。パス名では、「_」が通常推奨されます。
パス名ではスペースは有効ですが、パス名を引用符で囲む( "foo bar")かスペースをエスケープする(foo\bar)必要があるため、従来は回避されています。適切に記述されたシェルスクリプトは、スペース、特にパス名を含む可能性のある変数を引用しますが、そうしないとよく見落とされ、コマンドラインで1回限りのコマンドを入力すると、余分な入力が多くなります。
タイムスタンプやシリアル番号のように、 "-"を使用して数値のクラスターを分離することは、ファイルシステムのコンテキスト外で一般的に使用される規則です。 「。」を使用するファイルの種類を示す「ファイル拡張子」を分離することは非常に一般的であり、いくつかの重要なツールはそれに依存しています。たとえば、Red Hat Enterprise Linuxとその派生物であるRPMのパッケージ管理システムは、パッケージファイルが「.rpm」で終わることを想定しています。従来のtarballは、gzip( ".gz")されたtarファイル( ".tar")であり、 "。tar.gz"で終わります。
これらをまとめると、「home_backup_2017-07-01.tar.gz」のようなファイル名になることがよくあります。
デビッド・オニールにも同意します。
しかし、ファイルが同じディレクトリでソート可能であればいいので、番号.. 10を使用しないでください。ただし、番号を使用してください。 00.. 10。
名前に日付を使用する場合は、 ISO8601 のような標準の日付形式を使用してください。
また、名前の論理部分を区切るために複数の文字を使用することを恐れないでください。 _(これは3 _でした)を使用すると、後でファイル名の正規表現を簡略化できます。
だからあなたの例は次のようなものになるでしょう:
backup_2011-06-19T114012___part002___random
読みやすく、スクリプトで簡単に解析できます。
ファイル名に含まれる単語は、UNIXの規則に従って_
または-
で区切ることができます。
-
を使用すると、入力が簡単になり、Shiftキーを押す手間が省けます。ただし、-
はスペースをほとんどとらないため、_
と比較して単語の区切りを読み取るのは少し困難です。 _
を使用して単語を区切ると、_
がより多くのスペースを占めるため、見栄えがよくなります。
シェルスクリプトおよびその他のコンピュータプログラミングでは、_
はMY_ENVIRONMENT_FILE
のようなマルチワード変数に使用されます。ファイル名に_
を使用することで、ファイル名の一貫性が保たれます:MY_ENVIRONMENT_FILE=~/my_environment_file
。
Web開発では、-
がファイルの命名に適しています。理由の1つは、Webリンクの下線がアンダースコアを隠す可能性があり、Webリンクを手で入力している場合に困難になる可能性があるためです。
ほとんどのエディターとWebページでは、this_long_Word
はダブルクリックで完全に選択できますが、this-long-Word
は選択できません。