Ввод в командной строке, имитирующий файл? - PullRequest
5 голосов
/ 02 мая 2011

Я видел эту технику раньше, но не знаю, как она называется, и забыл точный синтаксис.Допустим, мне нужно передать файл в программу наподобие: command

command < $(file-line1; file-line2; file-line3)

Может кто-нибудь сказать мне, как это называется и как это сделать?

Ответы [ 4 ]

9 голосов
/ 02 мая 2011

Это называется Process Substitution

command < <(printf "%s\n" "file-line1" "file-line2" "file-line3")

. С учетом вышесказанного, command будет думать, что это ввод файла с именем, очень похожим на /dev/fd/XX, где 'XX' - это некоторое число.Как вы упомянули, это временный файл (фактически дескриптор файла), но он будет содержать 3 строки, которые вы передали команде printf.

2 голосов
/ 02 мая 2011

Herestring.

command <<< $'line 1\nline 2\nline 3\n'

Или heredoc.

command << EOF
line 1
line 2
line 3
EOF
1 голос
/ 02 мая 2011

Я думаю, что вы имеете в виду "здесь документ". Как это

#!/bin/sh
cat <<EOF
This is
the 
lines.
EOF
0 голосов
/ 02 мая 2011

Как насчет:

cat myfile.txt | head -n3 | command
...