Windowsでは、オペレーティングシステムはexe、doc、ppt、pdf ...などの拡張子を使用してファイル形式を認識します。
私たちが知っているように、Linuxでは拡張機能は役に立ちません。
私の質問は、Linuxがシェルスクリプト、オーディオファイル、ビデオファイルなど、どのファイル形式を処理しているかをどうやって知ることができますか?それとも、すべてのファイルを同じ方法で処理しますか?
答え1
ファイル拡張子はLinuxディストリビューションでは役に立たず、しばしば不要なショートカットです。 Linuxは、ファイル拡張子を本質的に不要にするツールを使用しています。最初であり、おそらく最も明白なのはシャーバン(#!
)です。
これシェルボーンシェルによって実行されるスクリプトの上部にある行で、シェルを実行するために何を使用する必要があるかを示します。たとえば、bashスクリプトに含める標準行は次のとおりです。
#!/usr/bin/bash
この行は、スクリプトの内容がのユーティリティによって実行される必要があることをシェルに伝えます/usr/bin/bash
。ただし、shebangは実際に実行可能なプロジェクトにのみ役立ちます。
最新のアプリケーションで広く使用されている次のツールはMIMEタイプです。マイムタイプWebブラウザと電子メールクライアントがどのような種類のファイルが転送されているかを知るために、インターネットで広く使用されているファイルタイプ宣言です。ただし、多くのプログラムは、これらのタイプを使用して何をすべきかを知るためにこれらのタイプに依存しています(たとえば、.desktop
X用のファイルには、特定のプログラムとのファイルタイプの関連付けを宣言するmimetype行が含まれる場合があります)。
最後に、ヒューリスティックを介してMIMEタイプを検出するために、Cライブラリとコマンドラインフロントエンドが開発されました。彼らはそれぞれlibmagic
とですfile
。Libmagicとfile
明示的に指定されていない場合でも、プログラムまたはユーザーはファイルのMIMEタイプを検出できます。
もちろん、shebangは最新のオペレーティングシステムでファイル形式を決定するのにはるかに小さい役割を果たしていますが、まだスクリプトの世界で広く使用されており、確かにまだ方程式の一部です。
$HOME/.local/share/applications/mimeapps.list
一部のファイルタイプの関連付けは、Xのmimetypes宣言を介してファイル(たとえば)にあります。
答え2
タイプ
% man file
デフォルトでは、ほとんどのファイルタイプデザイナーはフォーマットを識別するために最初の4文字を予約します。
magic number
これらの文字をファイル文字と呼びます。
WindowsやMacとは異なり、Unixにファイルの関連付けがないことを覚えておいてください。
実行可能ファイルは内部フラグ(「x」)で識別されます。
注文する
ls -l
その表示を示しています。