为什么 /bin/true 文件这么大?我如何找到源代码?

为什么 /bin/true 文件这么大?我如何找到源代码?

我昨天才发现/bin/true。我绝不是 bash 高级用户,但我决定检查一下。我很惊讶地发现它是一个 22K 文件(Ubuntu 12.04),而不是最小的实用程序之一/bin(例如kill更小)。这真的只是好奇,但它不是一小段代码,有什么理由吗?我该如何找到源代码/bin/true

答案1

好吧,看看 coreutils 工具的来源,true 最小的一个。它比 还小kill,但比 还大false, 是最小的:

$ for i in src/*c; do wc -l $i; done | sort -nr | tail -11
78 src/true.c
74 src/operand2sig.c
73 src/sync.c
37 src/prog-fprintf.c
2 src/uname-uname.c
2 src/uname-arch.c
2 src/ls-vdir.c
2 src/ls-ls.c
2 src/ls-dir.c
2 src/lbracket.c
2 src/false.c

因此,true有 78 行,但其中只有 58 行是实际代码(其余的是空行和注释):

$ grep . src/true.c | awk '{ if(/\/\*/){a=0} if(a){print} if(/\*\//){a=1}}' | wc
50

是的,其中很多(10 行)都是针对该usage函数的。该程序仍然微小的尽管。

此外,更小的原因false是它只是调用true

$ cat src/false.c
#define EXIT_STATUS EXIT_FAILURE
#include "true.c"

答案2

$ dpkg -S /bin/true
coreutils: /bin/true

因此实际提供文件的包/bin/truecoreutils

运行以下命令下载源代码coreutils

apt-get source coreutils

答案3

true是 GNU coreutils 的一部分。他们的主页在这里,那里有源代码的下载链接。使用 git,你可以使用以下命令下载源代码:

git clone git://git.sv.gnu.org/coreutils

相关内容