Исходный файл.zshrc в пятый раз явно требует больше времени, чем в первый раз

Здесь происходит две вещи.

Во-первых,

zip -r -qv test.zip *.* -x "..*" -x test.log -x test.zip

расширяется оболочкой, чтобы перечислить все, что соответствует *и .*, включая ..в вашем случае.

Во-вторых, zipпроверяет все имена файлов, которые ему даются, когда его просят выполнить рекурсию, прежде чем фильтровать исключенные шаблоны; поэтому он видит ../logs/michael.muryn.name/http.2810216.bak/html/daily.htmlи т. д. и вызывает для них stat, что приводит к ошибке, и в результате zipвыводит «имя не соответствует».

Обычный способ избежать этого — указать .[^.]*вместо .*или, поскольку вы также соответствуете *, запустить

zip -r -qv test.zip. -x test.log -x test.zip

вместо этого.

0
04.07.2020, 18:38
1 ответ

source(из csh )или.(из оболочки Bourne )— это встроенные команды оболочки, которые запрашивают у этой оболочки readи интерпретируют код оболочки, хранящийся в файле, переданном в качестве аргумента.

Время, необходимое для выполнения, — это время, необходимое для чтения и интерпретации этого кода, так что все зависит от того, что делает этот код.

Например, если этот код имеет:

var=$var$var

Что удваивает размер переменной $varкаждый раз, когда она запускается, легко представить, что чем больше вы запускаете этот код, тем больше времени требуется для его запуска, поскольку объем данных, которые необходимо копировать, удваивается каждый раз. время, когда вы запускаете его.

Чтобы узнать, какая команда занимает больше всего времени, вы можете выполнить:

PS4='%D{%T.%3.} %N:%i> '; set -o xtrace; source ~/.zshrc

Что будет печатать каждую выполняемую команду с отметкой времени с точностью до миллисекунды.

1
18.03.2021, 23:22

Теги

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