Далее предполагается, что часть 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
En time time
, ambos son los comandos integrados -de bash, ninguno es el comando externo /usr/bin/time
.
Esto es posible porque el time
integrado en -toma una tubería como argumento, pero time
en 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 time
después de otro time
o time -p
.
Solo ve la salida una vez porque time
se 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/time
externo llamándolo explícitamente con la ruta... O usando\time
(el \
inicial evita que el shell use un -integrado en )o usando el command
construyó -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/time
se 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 -.)
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 time
apuntará al mismo comando.
Si solo ve una salida en el primer ejemplo, se trata de un error de shell.
En shells que re -implementan el concepto ksh
donde time
es un keyword
, time
sin argumentos imprimen el tiempo para toda la canalización que en este caso especial es solo el único time
palabra clave.
Si llama a time time
, la primera vez imprime el tiempo para toda la canalización y la segunda time
imprime el tiempo solo para sí mismo.
Entonces, la palabra clave time
por sí sola es una palabra clave antes de un comando vacío.