我可以使用 和 反引号将文件的内容粘贴到命令中cat
:
ls `cat filenames`
有没有办法做相反的事情 - 将字符串转换为(临时)文件名?
gcc -o cpuburn `uncat "main(){while(1);}"`.c
答案1
您可以通过 gcc 的标准输入传递源代码。由于gcc
没有给出文件名,因此您需要-x
选择让它知道输出语言是什么。您可以通过这里的字符串(对于单线来说最方便),这里的文档,或管道。
gcc -o cpuburn -x c - <<<'main(){while(1);}'
如果需要在命令行上输入文件名,可以使用流程替代来生成内容。这并不能让您控制文件名(类似于/dev/fd/42
)。
gcc -o cpuburn -x c <(echo 'main(){while(1);}')
如果您确实需要控制临时文件的名称,则需要更复杂的方法来手动创建和删除临时文件。
src=$(mktemp XXXXXXXXXX.c)
trap 'rm "$src"' EXIT INT TERM HUP
echo 'main(){while(1);}' >"$src"
gcc -o cpuburn "$src"
(此答案假设您的 shell 是 bash、zsh 或 ksh93。)