Обратите внимание, что с помощью zsh
вы можете:
printf '%s() {\n%s\n}\n\n' ${(kv)functions[(R)*gitignore*]}
Извлекать информацию из текущих определенных функций (которые явно не включают комментарии).
Теперь, если вы хотите извлечь информацию из исходного файла, вы не сможете сделать это надежно, если не реализуете полный синтаксический анализатор оболочки.
Если вы можете сделать некоторые предположения о том, как объявлены ваши функции, например, если вы всегда используете это определение функции в стиле ksh, с function
и }
в начале строку, вы можете сделать:
perl -l -0777 -ne 'for (/^function .*?^\}$/gms) {
print if /gitignore/}' ~/.bashrc
или только посмотреть в теле функции:
perl -l -0777 -ne 'for (/^function .*?^\}$/gms) {
print if /\{.*gitignore/s}' ~/.bashrc
Похоже, это своего рода повреждение кеша пакетов.
Чтобы решить эту проблему, я сделал:
sudo pkg clean
sudo rm -rf /var/cache/pkg/*
sudo pkg update -f
После этого я снова смог устанавливать пакеты.
Я опирался на эту ветку форумов FreeBSD pkg 1.3.0: несоответствие размера не может продолжаться с подобной проблемой.