В bash есть понятие, называемое процессом замещения. Вы можете запустить команду и использовать вывод в виде файла.
например
$ cat -n <(seq 3|tac)
1 3
2 2
3 1
Мне любопытно, почему следующее не удается;
$ du -sk <(xzcat /var/log/mpd/scribble.log.xz )
0 /dev/fd/63
Точно так же у нас есть это
$ file <(seq 1 2)
/dev/fd/63: broken symbolic link to pipe:[32560687]
Файл не пустой.
$ xzcat /var/log/mpd/scribble.log.xz | wc -c
16877047
>/dev/null pv <(xzcat /var/log/mpd/scribble.log.xz )
16.1MiB 0:00:00 [ 232MiB/s] [ <=> ]
В качестве дополнительного вопроса, знаете ли вы технику в bash, чтобы за короткое время маскировать fifo как обычные файлы?