Это вопрос?
$ echo randomcollege-nt\user90| sed -e s,randomcollege-nt\,,
user90
, если строка random college-nt не постоянна, используйте команду awk выше / ниже.
source является встроенной, а не внешней командой, поэтому использование внешнего time во времени не имеет смысла. Выполните одно из следующих действий:
TIMEFMT=%E
for file in ${(M)config_files}
do
time (source file)
done
Или:
for file in ${(M)config_files}
do
\time -f %E zsh -c 'source "$1"' zsh "$file"
done
В первом, подоболочка необходима, потому что:
Дополнительная заметка: к любой конструкции, которая выполняется в текущей оболочке, молча игнорируется. Поэтому, хотя синтаксически ОК, чтобы положить курсор или цикл повторения или подобное сразу после ключевого слова времени, вы не получите статистики времени. Вместо этого вы должны использовать parens, чтобы заставить подоболочку, которая затем приурочена.И в последнем случае вы запускаете новый экземпляр zsh для каждого файла. Таким образом, в обоих случаях нет никакого способа для легко зависящих от времени сценариев (т. Е. Когда один файл конфигурации делает то, что требуется или каким-то образом влияет на другой файл конфигурации). В качестве альтернативы вы можете сохранить вывод time после каждого источника, что даст вам кумулятивное время:
TIMEFMT=%E
{time} 2> times
for file in ${(M)config_files}
do
source file
{time} 2>> times
done
Затем вы можете использовать awk или что-то, чтобы получить индивидуальные тайминги: [!d7 ]
awk 'NR != 1 {print $0 - prev} {prev = $0; getline}' times
source является встроенной, а не внешней командой, поэтому использование внешнего time во времени не имеет смысла. Выполните одно из следующих действий:
TIMEFMT=%E
for file in ${(M)config_files}
do
time (source file)
done
Или:
for file in ${(M)config_files}
do
\time -f %E zsh -c 'source "$1"' zsh "$file"
done
В первом, подоболочка необходима, потому что:
Дополнительная заметка: к любой конструкции, которая выполняется в текущей оболочке, молча игнорируется. Поэтому, хотя синтаксически ОК, чтобы положить курсор или цикл повторения или подобное сразу после ключевого слова времени, вы не получите статистики времени. Вместо этого вы должны использовать parens, чтобы заставить подоболочку, которая затем приурочена.И в последнем случае вы запускаете новый экземпляр zsh для каждого файла. Таким образом, в обоих случаях нет никакого способа для легко зависящих от времени сценариев (т. Е. Когда один файл конфигурации делает то, что требуется или каким-то образом влияет на другой файл конфигурации). В качестве альтернативы вы можете сохранить вывод time после каждого источника, что даст вам кумулятивное время:
TIMEFMT=%E
{time} 2> times
for file in ${(M)config_files}
do
source file
{time} 2>> times
done
Затем вы можете использовать awk или что-то, чтобы получить индивидуальные тайминги:
awk 'NR != 1 {print $0 - prev} {prev = $0; getline}' times
source является встроенной, а не внешней командой, поэтому использование внешнего time во времени не имеет смысла. Выполните одно из следующих действий:
TIMEFMT=%E
for file in ${(M)config_files}
do
time (source file)
done
Или:
for file in ${(M)config_files}
do
\time -f %E zsh -c 'source "$1"' zsh "$file"
done
В первом, подоболочка необходима, потому что:
Дополнительная заметка: к любой конструкции, которая выполняется в текущей оболочке, молча игнорируется. Поэтому, хотя синтаксически ОК, чтобы положить курсор или цикл повторения или подобное сразу после ключевого слова времени, вы не получите статистики времени. Вместо этого вы должны использовать parens, чтобы заставить подоболочку, которая затем приурочена.И в последнем случае вы запускаете новый экземпляр zsh для каждого файла. Таким образом, в обоих случаях нет никакого способа для легко зависящих от времени сценариев (т. Е. Когда один файл конфигурации делает то, что требуется или каким-то образом влияет на другой файл конфигурации). В качестве альтернативы вы можете сохранить вывод time после каждого источника, что даст вам кумулятивное время:
TIMEFMT=%E
{time} 2> times
for file in ${(M)config_files}
do
source file
{time} 2>> times
done
Затем вы можете использовать awk или что-то, чтобы получить индивидуальные тайминги:
awk 'NR != 1 {print $0 - prev} {prev = $0; getline}' times
Я посмотрел на команду man time и отметил
Users of the bash shell need to use an explicit path in order to run
the external time command and not the shell builtin variant. On system
where time is installed in /usr/bin, the first example would become
, поэтому я предполагаю, что вы должны указать путь для времени. Обратите внимание, что у меня нет опыта в zsh
Я посмотрел на команду man time и отметил
Users of the bash shell need to use an explicit path in order to run
the external time command and not the shell builtin variant. On system
where time is installed in /usr/bin, the first example would become
, поэтому я предполагаю, что вы должны указать путь для времени. Обратите внимание, что у меня нет опыта в zsh
Я посмотрел на команду man time и отметил
Users of the bash shell need to use an explicit path in order to run
the external time command and not the shell builtin variant. On system
where time is installed in /usr/bin, the first example would become
, поэтому я предполагаю, что вы должны указать путь для времени. Обратите внимание, что у меня нет опыта в zsh