Saya ragu tentang * nix.
Saya tidak tahu jenis file yang dapat dieksekusi
ls
, apakah itu .sh atau .ksh atau jenis sistem yang dapat dieksekusi jika ya, apa itu?ketika saya mencoba untuk melihat seperti apa kode sumber dari
ls
perintah, itu menunjukkan sesuatu yang tidak dapat dibaca, metode apa yang digunakan * nix untuk membuat jenis file yang tidak dapat dibaca dan dapatkah saya membuat file saya mirip dengan file-file ini (sepertils
- tidak dapat dibaca).
shell
executable
architecture
Jeyanthinath
sumber
sumber
Jawaban:
Anda dapat menentukan sifat suatu executable di Unix menggunakan
file
perintah dantype
perintah.Tipe
Anda menggunakan
type
untuk menentukan lokasi yang dapat dieksekusi pada disk seperti:Jadi sekarang saya tahu bahwa
ls
ini terletak di sistem saya di 2 lokasi:/usr/bin/ls
&/bin/ls
. Melihat itu executable saya bisa melihat mereka identik:CATATAN: Anda dapat mengonfirmasi bahwa mereka identik di luar ukurannya dengan menggunakan
dengan diff dengan cmpcmp
ataudiff
.Menggunakan file
Jika saya meminta mereka menggunakan
file
perintah:Jadi ini akan menjadi program fisik aktual yang telah dikompilasi dari C / C ++. Jika mereka adalah skrip shell, mereka biasanya menyajikan seperti ini untuk
file
:Apa itu ELF?
ELF adalah format file , ini adalah output dari kompiler seperti
gcc
, yang digunakan untuk mengkompilasi program C / C ++ sepertils
.Biasanya akan memiliki salah satu ekstensi berikut dalam nama file: none, .o, .so, .elf, .prx, .puff, .bin
sumber
type
di mana saja Anda tergoda untuk menggunakanwhich
atauwhereis
.md5sum
atausha1sum
, tidak hanya memeriksa ukuran dan waktu file.coreutils-8.21-13.fc19.x86_64
dan saya hanya tahu mereka identik dari 20 tahun berurusan dengan rilis Red Hat.Ini adalah biner yang dapat dieksekusi (dikompilasi ke dalam kode mesin, seperti kebanyakan sistem). Script shell lebih seperti "lem" untuk menggabungkan bagian-bagian dengan cepat dan fleksibel menciptakan solusi dari barang-barang yang ada. Itulah kekuatan * nix.
Anda memerlukan kode sumber (c, kadang-kadang c ++, adalah bahasa yang paling umum di * nix), bukan hanya executable yang dikompilasi. Karena ini adalah open source, Anda bisa mendapatkan kode untuk semuanya dari repositori online (utilitas inti biasanya dari proyek gnu). Namun, ini agak sulit jika Anda tidak tahu cara menggunakan git atau sistem pelacakan versi lainnya.
Ini adalah file ls.c, jika itu membantu: http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
sumber