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