我在哪里可以找到 grep 等终端命令的源代码?

时间:2021-04-10 18:58:34

标签: bash terminal

因为我是编程新手,所以我想问一下我在哪里可以找到终端命令的源代码并使用 vim 等编辑器查看它们。例如,如果我输入“which grep”然后尝试“vim /usr/bin/grep”,输出的格式是不可读的。

谢谢

1 个答案:

答案 0 :(得分:2)

在标准 Linux 系统上(至少)有两种不同类别的可执行文件;编译和解释的可执行文件。

grep 将是一个编译的可执行文件的例子,因为一旦它被编译,它就不再是人类可读的了。有一些工具,例如反汇编程序,可以将可执行文件转换为汇编语言,但是操作系统附带的 grep 命令的内容不太可能有足够的信息来重新创建可读源代码。如果您确实使用 vim 打开它,在典型的 Linux 发行版上,您应该在开头附近看到“ELF”;这表明它是 ELF(可执行和可链接格式)格式的二进制文件,这是二进制机器语言可执行文件的格式。

另一种类型的可执行文件是解释的可执行文件。这是您可以使用文本编辑器检查的文件类型。一种典型的方法是在 /usr/bin 中的某些文件(或实际上任何其他具有可执行文件的目录)上运行文件。

尝试此操作以查找您可能能够检查的文件列表。例如,在我的 ubuntu 机器上,shell 脚本的文件输出“POSIX shell 脚本,ASCII 文本可执行文件”。

cd /usr/bin
file * | grep -v ELF

或者如果此操作失败并出现 arg list too long 错误(感谢 @Jetchisel),请尝试以下操作:

cd /usr/bin
find . -type f | xargs file

查看有关获取 grep 源代码的问题的评论。

相关问题