拡張子が無く何のファイルなのかわからない場合、fileコマンドを使うと簡単にファイルの種類が確認できます
以下にfileコマンドを使用し確認した例を記します。
Linuxを使っているといろいろなコマンドを使いますよね。
そのコマンドはバイナリなのかスクリプトなのをかfileコマンドを使うと簡単に調べることができます。
幾つかのコマンドを調べてみます。
$ file $(which ruby) /usr/bin/ruby: symbolic link to ruby2.5
$ ls -l $(which ruby) lrwxrwxrwx 1 root root 7 3月 22 2018 /usr/bin/ruby -> ruby2.5
$ file /usr/bin/ruby2.5 /usr/bin/ruby2.5: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=4e2a1915e10cb3dc7ff37b4d47518029d3ebdbfe, strippedELF形式の実行ファイルであることが確認できます。
シンボリックリンクだった場合、以下のように-Lオプションを使用するとすぐに実体のファイル形式を調べることができます。
$ file -L $(which vim) /usr/bin/vim: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=b24dc62617e42d3191317b649874a87a1aac56cc, stripped
vimを調べてみると以下のようになります。
$ file $(which vim) /usr/bin/vim: symbolic link to /etc/alternatives/vim $ file /etc/alternatives/vim /etc/alternatives/vim: symbolic link to /usr/bin/vim.nox $ file /usr/bin/vim.nox /usr/bin/vim.nox: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=b24dc62617e42d3191317b649874a87a1aac56cc, stripped
$ file -L $(which vim) /usr/bin/vim: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, for GNU/Linux 3.2.0, BuildID[sha1]=b24dc62617e42d3191317b649874a87a1aac56cc, stripped
$ file $(which lsb_release) /usr/bin/lsb_release: Python script, ASCII text executable
いくつかの圧縮ファイルを作成しfileコマンドを使ってファイル形式を調べてみます。
$ touch a b c d
$ tar czf abcd1 a b c d
$ tar jcf abcd2 a b c d
$ tar Jcf abcd3 a b c d
$ file abcd? abcd1: gzip compressed data, last modified: Wed Jun 26 15:07:59 2019, from Unix abcd2: bzip2 compressed data, block size = 900k abcd3: XZ compressed data上記の出力の通り、拡張子が無くてもファイル種類が確認できます。
以上、fileコマンドを使ってファイルの形式(種類)を調べる方法でした。