Почему / bin / true такой большой файл? Как мне найти исходный код?

Я только что узнал о /bin/true вчера. Я ни в коем случае не опытный пользователь bash, но я решил проверить это. Я был удивлен, обнаружив, что это файл 22K (Ubuntu 12.04), а не одна из самых маленьких утилит в /bin (например, kill меньше). Это на самом деле просто любопытство, но есть ли причина для того, чтобы код не был очень маленьким? Как мне найти исходный код для /bin/true?

2
задан 24 April 2014 в 05:51

3 ответа

Ну, изучение источников 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"
0
ответ дан 24 April 2014 в 05:51
$ dpkg -S /bin/true
coreutils: /bin/true

, Таким образом, пакет, который на самом деле обеспечивает /bin/true файл, coreutils.

Выполнение ниже команды для загрузки исходного кода coreutils,

apt-get source coreutils
0
ответ дан 24 April 2014 в 05:51

true часть GNU coreutils. Их домашняя страница здесь , и существуют ссылки на загрузку для источника там. С мерзавцем можно загрузить исходное использование:

git clone git://git.sv.gnu.org/coreutils
0
ответ дан 24 April 2014 в 05:51

Другие вопросы по тегам:

Похожие вопросы: