拡張子.txt
のないテキストファイルも問題なく読み取れることに気付きました。どうして?これらのファイルを.txt
拡張子付きまたはなしで保存する必要がありますか?
また、.ini
ファイルについてはどうですか?私は通常、次のように使用します:config.ini
、ここで拡張機能を削除する必要がありますか?
Linuxがファイル拡張子を処理する方法に関する一般的なリソースがあれば役に立ちます。
UNIX/Linuxには、Windowsと同じ初期のDOS/CP/Mの遺産はありません。したがって、拡張機能は、ほとんどのUNIXユーティリティおよびツールにとって一般的にそれほど重要ではありません。
私は通常、コマンドラインのみの環境を使用しています。 Linuxでのそのような環境での拡張は、オペレーターやユーザーの利便性を除いて、それほど重要ではありません。 (私は、KDEやGNOMEで、ファイルマネージャーが拡張子をどのように扱うかを知るのに十分な経験がありません。)
しかし、そのような利便性は通常重要です。 config.ini
は実際にはMicrosoft標準の「.ini」形式です。拡張機能をそのままにしておきます。 Linuxでは通常、プレーンな古いテキストファイルは拡張子を持ちませんが、これはすべてのプログラム構成ファイルに共通ではありません。プログラマは通常それを決定します。
Linuxでは、「。txt」は構成ファイルやその他の機械可読ドキュメントではないことを強調したい場合に便利です。ただし、ソースディストリビューションでは、そのようなファイルには拡張子を付けずにすべて大文字で命名することが慣例となっています(README、INSTALL、COPYINGなど)。
いくつかの標準と規則がありますが、他の人と物事を共有しているのでない限り、好きな名前を付けることを妨げるものはありません。
Windowsでは、ファイルに名前を付ける.exe
はシェルを示します(通常はExplorer.exe
)実行可能ファイルであること。 UNIXは、この知識をファイルシステムの権限に組み込みます。適切なx
ビット(man chmod
)が設定されている場合、シェルおよびカーネル関数によって実行可能として認識されます(私は信じています)。これを超えると、Linuxは気にせず、ほとんどのシェルは気にせず、ほとんどのプログラムはファイルを調べて「タイプ」を見つけます。
もちろん、Niceコマンドfile
を使用して、ファイルを分析し、ある程度の確実性をもってファイルの内容を伝えることができます。ファイル内のデータを既知のタイプと一致させることができず、印刷可能なASCII/Unicode文字のみが含まれている場合は、テキストファイルと見なされます。
以下の@Bruce Edigerは完全に正しいです。カーネルまたはファイルシステムレベル、つまりLinux自体には何もありません。ファイルの内容がその名前、またはそれを理解することになっているプログラムと一致する必要があることを強制したり気遣ったりします。これは、ファイル名に基づいて処理を行うシェルまたはランチャーユーティリティを作成できないことを意味するものではありません。
Windowsとは異なり、UNIXシステムでは、ファイルタイプは拡張子によって決定されません。ファイルの拡張子は、単に人間にとって視覚的なインジケータであり、現在もそうでした。 JPEGにfoo.cという名前を付けて、Gimpで開くことができます。 Windowsとのもう1つの対比は、UNIXシステムではファイル名全体を使用する必要があることですが、Windowsは多くの場合それを処理します(たとえば、Explorer
とExplorer.exe
だけを実行します)。 UNIXでは、foo.sh
は単にfoo
ではなくfoo.sh
として呼び出す必要があります。
慣例により、人々は共通の拡張セットを使用する傾向があります。この実践は、不必要ではありますが、おそらく人類全体にとって有益です。
一般に、厳密でわかりやすい命名規則を維持すると非常に役立つことがわかりました。 Unixでは拡張機能は必要ありませんが、2つの理由でそれを保持します。
1)そのファイルがWindowsマシンによって読み込まれる場合、「...で開く」を見つけるよりも簡単に開くことができます。
2)拡張機能は、ユーザーがファイルの処理内容を理解するのに役立ちます。ラボでは:.txt =テキストファイル.sgi = irixコンパイル済みバイナリ.linux = linuxコンパイル済みバイナリ
古いUNIXマシンを使用する必要がある場合(現在もIRIXを使用しています)、* nixマシンではキャリッジリターンが異なるため、Windowsのキャリッジリターンでファイルを開こうとすると、プログラムが正しく認識されない場合があることに注意してください。
Intro to Unix File System を読むことをお勧めします。
いくつかの良い答えがあります。元の質問の一部にさらに答えたいと思います。「Linuxがファイル拡張子をどのように処理するかについての一般的なリソースは有用でしょう。」
拡張機能を登録して、Linuxが常に特定のプログラムで特定の拡張機能を開くようにすることができます。この機能は binfmt と呼ばれます。
binfmt_miscは、任意の実行可能ファイル形式を認識して、エミュレータや仮想マシンなどの特定のユーザー空間アプリケーションに渡すことができるLinuxカーネルの機能です。実行形式は、特殊な目的のファイルシステムインターフェイス(/ procと同様)を介して登録されます。 Debianベースのディストリビューションは、追加のbinfmt-supportパッケージを通じて機能を提供します。
各形式には、/ proc/sys/fs/binfmt_miscディレクトリに対応するファイルエントリがあり、指定したファイル形式に関する情報を取得するために読み取ることができます。