Я не знаю общего инструмента для такого рода кэширования, но я знаю специфический инструмент для кэширования результатов компиляции файлов C или C++, ccache
compiler cache.
Он хранит предварительно обработанные исходные тексты и скомпилированные файлы объектного кода и использует хэши на основе исходного кода и сигнатуры компилятора, чтобы определить, следует ли использовать кэш или перекомпилировать файл.
Общий кэш для shell должен будет аналогичным образом хэшировать сценарий, сигнатуру каждой используемой внешней утилиты и т.д., а также учитывать, что вывод сценария shell может зависеть от времени суток (если он использует дату
) и многих многих других факторов.
Создание кэша для одной команды не принесет пользы, особенно для echo
, поскольку он встроен в большинство оболочек и дополнительная обработка его для кэширования только замедлит его (если только то, что было эхом, не вызывало также тяжелые внешние утилиты через подстановки команд и т.д.). )
Я не думаю, что в конечном итоге это было бы целесообразно, но, возможно, полезно только в очень специфическом контексте, как, например, утилита ccache
для кэширования компиляций, которая представляет собой проблему, несколько более ограниченную в своем масштабе.
Также обратите внимание, что хотя утилита может выдавать некоторый результат, она может иметь побочные эффекты (например, запись в файлы и т.д.), которые нелегко кэшировать.
pkg set -A 0 myPackage-1.2.3_4
Или используйте -A 1
, чтобы отметить его как автоматический.
Кроме того, pkg query -a "%o %a"
перечислит все пакеты и их автоматическую -принадлежность. Или RTFM pkg-query
для примера того, как перечислить только автоматические или не -автоматические пакеты.