Cukup gunakan file
:
$ file /usr/bin/add-apt-repository
/usr/bin/add-apt-repository: Python script, ASCII text executable
$ file /usr/bin/ab
/usr/bin/ab: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=569314a9c4458e72e4ac66cb043e9a1fdf0b55b7, stripped
Sebagaimana dijelaskan dalam man file
:
NAME
file — determine file type
DESCRIPTION
This manual page documents version 5.14 of the file command.
file tests each argument in an attempt to classify it. There are three
sets of tests, performed in this order: filesystem tests, magic tests,
and language tests. The first test that succeeds causes the file type to
be printed.
The type printed will usually contain one of the words text (the file
contains only printing characters and a few common control characters and
is probably safe to read on an ASCII terminal), executable (the file con‐
tains the result of compiling a program in a form understandable to some
UNIX kernel or another), or data meaning anything else (data is usually
“binary” or non-printable). Exceptions are well-known file formats (core
files, tar archives) that are known to contain binary data. When adding
local definitions to /etc/magic, make sure to preserve these keywords.
Users depend on knowing that all the readable files in a directory have
the word “text” printed. Don't do as Berkeley did and change “shell
commands text” to “shell script”.
Anda juga dapat menggunakan trik untuk menjalankan ini langsung atas nama yang dapat dieksekusi di $PATH
:
$ file $(type -p add-apt-repository | awk '{print $NF}')
/usr/local/bin/add-apt-repository: Python script, ASCII text executable
$ file $(type -p ab | awk '{print $NF}')
/usr/bin/ab: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=569314a9c4458e72e4ac66cb043e9a1fdf0b55b7, stripped
Untuk menemukan tipe file dari semua executable yang dapat ditemukan di direktori Anda $PATH
, Anda dapat melakukan ini:
find $(printf "$PATH" | sed 's/:/ /g') -type f | xargs file
Dan untuk menjalankan file
semua file dalam direktori tertentu ( /usr/bin
, misalnya), lakukan saja
file /usr/bin/*
file
untuk setiap file untuk melihat jenis file apa ini. Apakah ada metode sederhana untuk semua file?file /usr/bin/*
. Sama seperti perintah lainnya.Sebenarnya, perbedaan di antara keduanya tidak terlalu bagus.
Pada sistem Unix atau Linux yang khas, ada kurang dari lima executable nyata. Di Ubuntu, ini adalah
/lib/ld-linux.so.2
dan/sbin/ldconfig
.Segala sesuatu yang ditandai dapat dieksekusi dijalankan melalui interpreter , yang didukung dua format:
#!
akan memiliki nama juru bahasa antara ini dan karakter baris baru pertama (itu benar, tidak ada persyaratan bahwa "skrip" menjadi file teks).PT_INTERP
segmen yang memberikan jalur ke penerjemah (biasanya/lib/ld-linux.so.2
).Ketika file seperti itu dieksekusi, kernel menemukan nama juru bahasa, dan memanggilnya sebagai gantinya. Ini bisa terjadi secara rekursif, misalnya ketika Anda menjalankan skrip shell:
#! /bin/sh
di awal./bin/sh
, menemukanPT_INTERP
segmen menunjuk ke/lib/ld-linux.so.2
./lib/ld-linux.so.2
, menemukan bahwa ia tidak memilikiPT_INTERP
segmen, memuat segmen teksnya dan memulainya, melewati pegangan terbuka ke/bin/sh
dan baris perintah untuk permintaan skrip Anda.ld-linux.so.2
memuat segmen kode dari/bin/sh
, menyelesaikan referensi pustaka bersama dan memulai fungsi utamanya/bin/sh
kemudian buka kembali file skrip, dan mulai menafsirkannya baris demi baris.Dari sudut pandang kernel, satu-satunya perbedaan adalah bahwa untuk file ELF, deskriptor file terbuka dilewatkan daripada nama file; ini sebagian besar merupakan optimasi. Apakah penerjemah kemudian memutuskan untuk melompat ke segmen kode yang dimuat dari file, atau menafsirkannya baris demi baris hanya diputuskan oleh penerjemah, dan sebagian besar didasarkan pada konvensi.
sumber
Perintah file sangat bagus, tetapi untuk alat analisis yang lebih profesional, saya ingin Anda mencoba paket TrID yang merupakan alat Pengidentifikasi File.
TrID adalah utilitas yang dirancang untuk mengidentifikasi jenis file dari tanda tangan binernya, dan mudah digunakan.
Untuk informasi lebih lanjut dan paket hanya kunjungi: Situs
sumber