Предположим, у меня есть этот скрипт сценария вызова cpdir:
(cd $1 ; tar -cf - . ) | (cd $2 ; tar -xvf - )
Когда я запустил его, основная оболочка должна создать два процесса (подоболочки) для одновременного выполнения обеих групп команд. Однако как оболочка может убедиться, что оба процесса перейдут в соответствующие каталоги, затем сначала процесс упакует содержимое каталога и отправит второму процессу для распаковки?
Почему нет расы? Является ли правилом, что каждая команда каждого процесса будет выполняться по порядку, хотя процессы могут быть параллельными?
т.е. первый процесс будет запускать «cd $ 1», а затем второй процесс будет запускать «cd $ 2» (или он должен быть выполнен в то же время, что и первый процесс? Не уверен), затем первый процесс все упакует и, наконец, отправит во второй процесс.
Хотя, одна маленькая вещь, которую я не знаю о смоле:
tar -cf - .
Я знаю, что точка (.) - это содержимое текущего каталога. Однако что означает «-» в команде?