Как я могу передать данные потоком к программе, которая ожидает считывать данные из файла, который дан как аргумент?

С zsh используйте . спецификатор шарика для соответствия только регулярным файлам:

rm -- **/*(.)

Это удаляет все (нескрытые) регулярные файлы в текущем каталоге и его подкаталогах рекурсивно. Добавьте D спецификатор шарика для удаления скрытых регулярных файлов (и регулярных файлов в скрытых каталогах) также.

17
15.11.2013, 01:44
2 ответа

Можно использовать оператор замены процесса <() из bash (или zsh):

4s-import <(zcat huge.gz)

Этот оператор создаст временный FIFO /dev/fd/NN и замена <(.) со строкой /dev/fd/NN. 4s-import теперь может открыться /dev/fd/NN и читайте из того FIFO, в то время как bash будет работать zcat huge.gz, который отправляет его вывод в /dev/fd/NN.

32
27.01.2020, 19:46
  1. Много программ имеют a - как стандартный вход. Если Ваш делает, используют это, поскольку это "встроено".

  2. Можно также попытаться использовать /dev/stdin или /dev/fd/0 как файл.

  3. Третья опция состоит в том, чтобы использовать mkfifo создать FIFO специальный файл. В одной оболочке Вы передаете по каналу в своих данных (например. gunzip > your_fifo_file), в то время как в другом Вы называете свою программу с FIFO как файл.

17
27.01.2020, 19:46

Теги

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