このエントリーをはてなブックマークに追加


拡張子が無く何のファイルかを調べる方法・file

拡張子が無く何のファイルなのかわからない場合、fileコマンドを使うと簡単にファイルの種類が確認できます。
以下にfileコマンドを使用し確認した例を記します。


コマンドはバイナリなのかスクリプトなのか?を確認する

Linuxを使っているといろいろなコマンドを使いますよね。
そのコマンドはバイナリなのかスクリプトなのをかfileコマンドを使うと簡単に調べることができます。
幾つかのコマンドを調べてみます。

rubyコマンドを調べてみる

rubyコマンドを調べてみます。

  1. rubyコマンドを調べるとシンボリックリンクであることが確認できます。
    $ file $(which ruby)
    /usr/bin/ruby: symbolic link to ruby2.5
  2. rubyの実体を調べると/usr/bin/ruby2.5であることが確認できます。
    $ ls -l $(which ruby)
    lrwxrwxrwx 1 root root 7  3月 22  2018 /usr/bin/ruby -> ruby2.5
  3. 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の使用、未使用で実行したときの出力です。

  1. 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
  2. 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コマンドを使ってファイル形式を調べてみます。

  1. とりあえず空ファイルですが、4ファイルを作成
    $ touch a b c d
  2. gzip形式で圧縮
    $ tar czf abcd1 a b c d
  3. bzip2形式で圧縮
    $ tar jcf abcd2 a b c d
  4. XZ形式で圧縮
    $ tar Jcf abcd3 a b c d
  5. 作成した圧縮ファイルの形式を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コマンドを使ってファイルの形式(種類)を調べる方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-06-27 (木) 00:20:06