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

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

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"
$ dpkg -S /bin/true
coreutils: /bin/true

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

Запустите приведенную ниже команду, чтобы загрузить исходный код coreutils,

apt-get source coreutils

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

git clone git://git.sv.gnu.org/coreutils
Другие вопросы по тегам