* nixに関して疑問があります。
ls
.sh、.ksh、または他の種類のシステム実行可能ファイルであるかどうか、実行可能ファイルのタイプがわからない場合、それは何ですか?私はのソースコードであるかを確認しようとしたとき
ls
のようなコマンドに見える、それが読めないこれらの種類のファイルを作成するために、* nixの使用を何方法、読めない何かを示していて、私は(のように、これらのファイルへの私のファイルは、同様のことができますls
-読めません)。
* nixに関して疑問があります。
ls
.sh、.ksh、または他の種類のシステム実行可能ファイルであるかどうか、実行可能ファイルのタイプがわからない場合、それは何ですか?
私はのソースコードであるかを確認しようとしたときls
のようなコマンドに見える、それが読めないこれらの種類のファイルを作成するために、* nixの使用を何方法、読めない何かを示していて、私は(のように、これらのファイルへの私のファイルは、同様のことができますls
-読めません)。
回答:
file
コマンドとコマンドを使用して、Unixの実行可能ファイルの性質を判別できtype
ます。
次のtype
ようにして、ディスク上の実行可能ファイルの場所を決定します。
$ type -a ls
ls is /usr/bin/ls
ls is /bin/ls
だから、私は今、それls
が私のシステムの2つの場所にあることを知っています:/usr/bin/ls
&/bin/ls
。これらの実行可能ファイルを見ると、それらが同一であることがわかります。
$ ls -l /usr/bin/ls /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /usr/bin/ls
注:cmp
またはを使用して、サイズが同じであることを確認できますdiff
。
$ diff -s /usr/bin/ls /bin/ls
Files /usr/bin/ls and /bin/ls are identical
cmpを使用
$ cmp /usr/bin/ls /bin/ls
$
file
コマンドを使用してそれらを照会する場合:
$ file /usr/bin/ls /bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
したがって、これらはC / C ++からコンパイルされた実際の物理プログラムになります。シェルスクリプトの場合、通常は次のように表示されfile
ます。
$ file somescript.bash
somescript.bash: POSIX shell script, ASCII text executable
ELFはファイル形式であり、などのコンパイラの出力であり、などのgcc
C / C ++プログラムをコンパイルするために使用されますls
。
コンピューティングでは、Executable and Linkable Format(ELF、以前はExtensible Linking Formatと呼ばれていました)は、実行可能ファイル、オブジェクトコード、共有ライブラリ、およびコアダンプの一般的な標準ファイル形式です。
通常、ファイル名には次の拡張子のいずれかがあります:none、.o、.so、.elf、.prx、.puff、.bin
type
には、which
またはを使用したい場所で使用することをお勧めしますwhereis
。
md5sum
またはのようなものを実際に使用する必要がありsha1sum
ます。
coreutils-8.21-13.fc19.x86_64
あり、Red Hatリリースを扱った20年間で同一であることを知っています。
これはバイナリ実行可能ファイルです(ほとんどのシステムと同様に、マシンコードにコンパイルされます)。シェルスクリプトは、パーツを結合して既存のものから迅速かつ柔軟にソリューションを作成する「接着剤」に似ています。それが* nixの力です。
コンパイルされた実行可能ファイルだけでなく、ソースコード(c、場合によってはc ++、* nixで最も一般的な言語)が必要です。オープンソースなので、すべてのコードをオンラインリポジトリから取得できます(コアユーティリティは通常gnuプロジェクトから取得されます)。ただし、gitまたは他のバージョン追跡システムの使用方法がわからない場合は、少し注意が必要です。
それは場合に役立ちます。ここls.cファイルは、次のとおりです。 http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c