Я не имею BSD и никогда не использовал его..., но наверняка log_daemon_message должен быть функцией оболочки. Посмотрите выше этого к операторам как:
.. / функции
Это получает все функции в функциональном файле. Другая вещь, которую можно сделать, состоит в том, чтобы искать определенную функцию с находкой:
найдите / и т.д. - тип f - должностное лицо grep - литий log_daemon_msg {} \;
И посмотрите то, что находится в файлах. Как я сказал, у меня нет BSD, но исследование является забавой!
Аплодисменты и удача
Вы могли сделать что-то вроде этого. Я только слегка протестировал его, но я думаю, что общее понятие является звуковым.
Скажите, что у Вас есть следующий каталог файлов:
$ ls -l
total 16
-rwxrwxr-x 1 saml saml 268 Oct 4 17:44 expander.bash
-rw-rw-r-- 1 saml saml 18 Oct 4 16:49 src_1.bash
-rw-rw-r-- 1 saml saml 20 Oct 4 16:50 src_2.bash
-rwxrwxr-x 1 saml saml 119 Oct 4 16:49 top.bash
top.bash
файл похож на это:
$ cat top.bash
#!/bin/bash
echo "1"
echo "2"
echo "3"
echo "4"
. src_1.bash
echo "15"
echo "16"
. src_2.bash
echo "27"
echo "28"
Вы могли использовать следующий сценарий, expander.bash
"расшириться" top.bash
:
#!/bin/bash
while read -r line; do
if echo "$line" | grep -q '\. .*'; then
file=$(echo "$line" | sed 's/\. //')
echo "### below sourced from: $file"
cat $file
echo "### above sourced from: $file"
continue
fi
printf "%s\n" "$line"
done < top.bash
$ ./expander.bash
#!/bin/bash
echo "1"
echo "2"
echo "3"
echo "4"
### below sourced from: src_1.bash
echo "6"
echo "7"
### above sourced from: src_1.bash
echo "15"
echo "16"
### below sourced from: src_2.bash
echo "17"
echo "18"
### above sourced from: src_2.bash
echo "27"
echo "28"
Для одного я использовал grep
и sed
, они могли быть выгружены для создания этого более чистым решением для Bash. Я не не торопился, чтобы сделать это, так как это - грубый прототип.
Второй областью, которой, скорее всего, будет необходимо уделять внимание, является способность к сценариям выяснить, что определение источника другого файла происходит. Шаблон, который обнаруживает это, должны будут, вероятно, "настроить" на основе Вашей ситуации.
Ответ @slm вдохновил меня написать flatten.sh .
flatten.sh
не будет включать весь исходный файл. Вместо этого он будет извлекать только те функции, определенные в файле, которые фактически используются в выравниваемом скрипте.
Это полезно, если вы храните файл "lazy.lib", который, в свою очередь, содержит ВСЕ функции, которые вы используете. Просто добавьте «lazy.lib» в свой сценарий во время разработки и сгладьте его, когда закончите.
category-icon-
префикс, который Вы добавили, прибывает перед путем к файлу этот путь? Я полагаю, что это закончило бы тем, что пыталось выполнить вещи какmv ./rel/path/to/cateory-icon-blah category-icon-./rel/path/to/
---------121 А-ч--------124278----, конечно. Я искал существующий инструмент какcpp
препроцессор (только для сценариев оболочки, не C), но Ваш ответ показывает, как легкий это должно сделать тот самостоятельно. Я попробую это и другие предложения перед принятием, но это выглядит многообещающим. – syam 05.10.2013, 01:12set -x
помочь мне понять, что действительно продолжалось). Для записи время начальной загрузки прошло от 45 перед любой оптимизацией вниз к 11 теперь. Я был бы склонен называть это откровенным успехом. :) – syam 06.10.2013, 01:09/lib/lsb/init-functions
и соответствиеlog_*
вызовы сохраняют.5 к 1 секунде на сценарий, это одно сделало половину задания). Но это показывает, что Debian гибок и может быть оптимизирован довольно много. :) – syam 06.10.2013, 01:41