Linuxの拡張子、なんてものはなかった。

昨日の記事でシェルスクリプトのファイルを拡張子削ってみても普通に使えた!っていう事象がありました。
完全にwindowsしか使ってこなかった身分としては「拡張子を変更するとファイルが開けなくなる可能性があります」っていう警告を出すくらい、ファイルと拡張子の関連性は高いものだと思ってました。ましてや拡張子を削るなんてなにもできないファイルじゃないか、と。

Linux 拡張子」でググったら資料は出てくる出てくる。これ、割とLinux初心者が無意識にwindowsの常識を持ち込んでしまっていて、まず最初にびっくりするギャップなのかもしれないなー。
例えば、hoge.shというファイルは.shの拡張子がついているけど、'hoge.sh'っていうテキストファイルである可能性もある。ってこと。'hoge.sh'っていうのがファイル本体の名前。

そのファイルがなんなのか、明示化するためにあくまで規約として.shや.txt等をファイル名につけることはあっても、LinuxUnix系では拡張子という概念は存在しない、らしい。
これでwindows脳が困るのは以下のようなケースだけど、やり方はいくらでもあるっぽい。

Linuxはファイルの区別を拡張子で行わないので、そのファイルが一体どのようなファイルなのかはファイル名、拡張子からは判断できません。Linuxのファイルの種類を調べるには、fileコマンドを使用します。

構文としては「file ファイル名」と実行します。

ファイルの種類を調査する

[pakira@Dolphin du_test]$ file du_file
du_file: empty
↑空ファイルを調査します。

[pakira@Dolphin pakira]$ file du_test/
du_test/: directory
↑ディレクトリを調査します。

[pakira@Dolphin bin]$ file sleep
sleep: ELF 32-bit LSB executable, Intel 80386, version 1, for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
↑コマンドファイルを調査します。
引用元:
ファイルの種類を調べる:Linux最強Tips集

勉強になりました。