Сначала вы используете mv
, который перемещает файл, а не копирует его. Вам нужно использовать cp
, но cp
может копировать несколько файлов в одно место назначения.
Вам нужно будет выполнить cp
несколько раз. Одним из решений, которое вы можете использовать, является создание простого сценария, который копирует аргумент в несколько мест назначения. Затем в вашей команде find.. -exec {}
запустите скрипт с файлом в качестве аргумента и скопируйте его несколько раз внутри вашего скрипта.
Нет. Конвейер — это -односторонний канал связи. Вот почему это называется «конвейером»; вы не смогли бы отправить нефть обратно по трубопроводу, даже если бы попытались.
Однако, если bar.js также должен взаимодействовать с foo.js, у вас есть несколько вариантов:
foo.js
и bar.js
по отдельности (, т. е. больше не передавайте вывод foo.js в bar.js ). Я не знаю, как вы это делаете из узла, но, по сути, сокет домена unix — это сетевой сокет, который использует имена файлов, а не IP-адреса, и работает внутри ядра. Сокеты предназначены для двунаправленной связи, но требуют большей настройки, чем простой канал (, например, прослушивающий сокет может взаимодействовать с несколькими экземплярами bar.js ). Вы можете найти сокеты домена unix в файловой системе, но это не является строго необходимым (, и действительно, Linux позволяет создавать сокет домена unix без следа в файловой системе ). mkfifo
для создания именованного канала (или используйте какой-либо API узла для его создания, если он существует; опять же, я не знаю узел ). Затем в foo.js
откройте этот именованный канал и прочитайте из него. Ваш скрипт bar.js
может открывать тот же именованный канал и писать в него.К последнему будет проще всего перейти, так как вы по-прежнему используете файловый ввод-вывод (открытие именованного канала требует открытия файла в файловой системе ), но все равно будет однонаправленным (, хотя вы иметь два канала, по одному в каждом направлении ). Первый немного чище, а также позволяет вам легче перенести один из двух сценариев на другой хост, если это когда-либо понадобится.
В любом случае, если ваши сценарии теперь взаимодействуют в двух направлениях, то для ясности я бы посоветовал вам запускать их как отдельные процессы, а не связывать один процесс с другим. ИМХО, теперь они равноправные партнеры, и ваша командная строка должна показать это. Это всего лишь деталь, и, конечно, технически не требуется.