То, что вы сделали, называется перенаправлением ввода-вывода . > файл
перенаправляет стандартный вывод (stdout) в данный файл
. В вашем случае вы сделали это 2 раза. Оболочка не обрабатывает перенаправление одного и того же вывода несколько раз.
В этом случае:
cat somefile >file1 >file2
Оболочка обрабатывает перенаправления перед выполнением команды ( cat somefile
).Это означает, что >
обрезает файл до нулевой длины, потому что вы переопределяете содержимое файла. Файл должен быть пустым, прежде чем оболочка сможет выполнить команду. Это делается с помощью обоих перенаправлений >
.
Теперь второй (> файл2
) переопределяет первый (> файл1
), потому что оболочка обрабатывает перенаправление в порядке появления. Итак, последний - тот, который будет эффективно использоваться. Таким образом, вывод cat somefile
будет перенаправлен в file2
, а file1
будет обрезан до нулевой длины.
Перенаправление стандартного вывода на несколько процессов / файлов может быть выполнено с помощью tee
следующим образом:
cat somefile | tee file1 file2 file3 fileX
Это распечатает содержимое на стандартный вывод и для всех файлов, указанных в качестве параметров.