我对* nix有一些疑问。
我不知道哪种可执行文件是ls
.sh或.ksh或任何其他类型的系统可执行文件,那是什么?
当我尝试查看ls
命令的源代码是什么时,它表明某些内容不可读,* nix使用什么方法来创建这些类型的不可读文件,并且可以使我的文件类似于这些文件(例如ls
-不可读)。
您可以使用和file
命令来确定Unix中可执行文件的性质type
。
您可以type
像这样确定可执行文件在磁盘上的位置:
$ type -a ls
ls is /usr/bin/ls
ls is /bin/ls
因此,我现在知道它ls
位于系统上的两个位置:/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 ++编译的实际物理程序。如果它们是shell脚本,则通常会这样显示file
:
$ file somescript.bash
somescript.bash: POSIX shell script, ASCII text executable
ELF是一种文件格式,它是编译器(如)的输出,gcc
用于编译C / C ++程序(如)ls
。
在计算中,可执行和可链接格式(ELF,以前称为可扩展链接格式)是可执行文件,目标代码,共享库和核心转储的通用标准文件格式。
它通常在文件名中具有以下扩展名之一:none,.o,.so,.elf,.prx,.puff,.bin
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句