拡張子が無く何のファイルかを調べる方法・file †
拡張子が無く何のファイルなのかわからない場合、fileコマンドを使うと簡単にファイルの種類が確認できます。
以下にfileコマンドを使用し確認した例を記します。
コマンドはバイナリなのかスクリプトなのか?を確認する †
Linuxを使っているといろいろなコマンドを使いますよね。
そのコマンドはバイナリなのかスクリプトなのをかfileコマンドを使うと簡単に調べることができます。
幾つかのコマンドを調べてみます。
rubyコマンドを調べてみる †
rubyコマンドを調べてみます。
- rubyコマンドを調べるとシンボリックリンクであることが確認できます。
$ file $(which ruby)
/usr/bin/ruby: symbolic link to ruby2.5
- rubyの実体を調べると/usr/bin/ruby2.5であることが確認できます。
$ ls -l $(which ruby)
lrwxrwxrwx 1 root root 7 3月 22 2018 /usr/bin/ruby -> ruby2.5
- ruby2.5をfileコマンドで確認した結果は以下の通りです。
$ 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, stripped
ELF形式の実行ファイルであることが確認できます。
シンボリックリンクだった場合、以下のように-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を調べてみると以下のようになります。
vimコマンドを調べてみる †
オプション-Lの使用、未使用で実行したときの出力です。
- Lオプションを使用しない
$ 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
- 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
lsb_releaseコマンドを調べてみる †
lsb_releaseコマンドはシェルスクリプトなのが確認できます。
$ file $(which lsb_release)
/usr/bin/lsb_release: Python script, ASCII text executable
拡張子なしの圧縮ファイルを調べてみる †
いくつかの圧縮ファイルを作成しfileコマンドを使ってファイル形式を調べてみます。
- とりあえず空ファイルですが、4ファイルを作成
$ touch a b c d
- gzip形式で圧縮
$ tar czf abcd1 a b c d
- bzip2形式で圧縮
$ tar jcf abcd2 a b c d
- XZ形式で圧縮
$ tar Jcf abcd3 a b c d
- 作成した圧縮ファイルの形式をfileコマンドで確認
$ 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コマンドを使ってファイルの形式(種類)を調べる方法でした。