Является ли каждый раз в этих примерах ключевым словом или / usr / bin / time?

Далее предполагается, что часть Rep имени файла нумеруется последовательно, начиная с 1 (т.е. не будет Rep2 или Rep3, если также не будет Rep1). Он использует наличие файла "Rep1", чтобы решить, запускать ли кот для конкретной серии файлов Experiment * ... это необходимо только в том случае, если некоторые файлы могут отсутствовать в последовательности ExperimentA * .. ExperimentZ * . Если это невозможно, просто удалите [-e Experiment $ {f} _Rep1.bed] && из строки cat.

for f in {A..Z} ; do
    [ -e Experiment${f}_Rep1.bed ] && cat Experiment${f}_Rep*.bed > Experiment${f}_merged.bed
done
0
16.05.2018, 07:32
3 ответа

En time time, ambos son los comandos integrados -de bash, ninguno es el comando externo /usr/bin/time.

Esto es posible porque el timeintegrado en -toma una tubería como argumento, pero timeen sí mismo es una tubería, por lo que son posibles múltiples llamadas.

Si observa el código fuente de bash, incluso encontrará comentarios que se refieren a este caso especial , buscando una llamada a timedespués de otro timeo time -p.

Solo ve la salida una vez porque timese implementa al establecer un indicador de bit , por lo que llamarlo más de una vez no tiene ningún efecto, ya que solo establece el mismo bit en esa canalización...

Esto, sin embargo, lo llama en dos canalizaciones separadas, por lo que verá la salida dos veces:

$ time { time; }

real    0m0.000s
user    0m0.000s
sys 0m0.000s

real    0m0.000s
user    0m0.000s
sys 0m0.000s

Puede ver los resultados usando el /usr/bin/timeexterno llamándolo explícitamente con la ruta... O usando\time(el \inicial evita que el shell use un -integrado en )o usando el commandconstruyó -en (como en time command time), por ejemplo:

$ time command time
Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
       [--portability] [--format=format] [--output=file] [--version]
       [--quiet] [--help] command [arg...]

real    0m0.002s
user    0m0.000s
sys 0m0.000s

Como ves, el externo /usr/bin/timese queja cuando lo llaman sin argumentos... Entonces eso es lo que estás viendo ahí. (Además,si lo usa en un comando real, notará que el formato de salida es diferente al del bash incorporado -.)

4
28.01.2020, 02:16

Podrían ser ambos dependiendo de su configuración.
Puede ver qué hay en su sistema con este comando:

$ type time
time is a shell keyword

En su ejemplo, tanto el tiempo en time timeapuntará al mismo comando.

0
28.01.2020, 02:16

Si solo ve una salida en el primer ejemplo, se trata de un error de shell.

En shells que re -implementan el concepto kshdonde timees un keyword, timesin argumentos imprimen el tiempo para toda la canalización que en este caso especial es solo el único timepalabra clave.

Si llama a time time, la primera vez imprime el tiempo para toda la canalización y la segunda timeimprime el tiempo solo para sí mismo.

Entonces, la palabra clave timepor sí sola es una palabra clave antes de un comando vacío.

1
28.01.2020, 02:16

Теги

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