像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位于系统上的两个位置:/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?

ELF是一种文件格式,它是编译器(如)的输出,gcc用于编译C / C ++程序(如)ls

在计算中,可执行和可链接格式(ELF,以前称为可扩展链接格式)是可执行文件,目标代码,共享库和核心转储的通用标准文件格式。

它通常在文件名中具有以下扩展名之一:none,.o,.so,.elf,.prx,.puff,.bin

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Windows 中使用 python 创建像 awscli 这样的命令行应用程序?

通过测验创建像视频游戏这样的生活系统

如何创建像真棒字体这样的图标

如何创建像 jsfiddle 这样的 WYSIWYG

如何创建像苹果这样的导航栏?

如何创建像$ RANDOM这样的bash变量

如何创建像 CleanMyMac X 这样的 UI?

像fdisk -l这样的命令如何找到扇区大小?

如何为长 ls 命令创建别名?

像DataAdapter这样的Dapper命令

如何在 Scala 中创建像 "?, ?, ?, ?, ?, ?, ?" 这样的字符串?

如何使用外键定义创建像A这样的表B?

如何创建像DU Speed Booster这样的晶圆厂并保持运转?

如何创建像Facebook Messenger这样的聊天气泡

Swift如何创建像UIViewController这样的通用MVP

WPF:如何创建像“Telerik UI for WPF”这样的 UI 库?

像 Openpyxl 这样的模块如何创建/读取 Excel 文件

Pyspark。如何创建像这样的df.shema?

如何在Android中像这样创建径向渐变

如何在flutter中创建像这样的交错网格视图

如何创建像Uber这样的电话身份验证凭证?

如何使用Radius CustomPainter像这样的模型创建弧

如何创建一个像这样的无限全屏滑块?

如何创建像聊天气泡这样的形状

如何使像这样的滑块?

实施像OnPlatform / OnIdiom这样的系统

如何模拟像 os.pathsep 这样的 Python 系统属性?

do_new_mount_fc()如何安装像ext4这样的真实文件系统?

像select()或poll()这样的系统调用如何在后台运行?