是否有一个命令可以创建一个包含传递给它的参数的临时文件?

是否有一个命令可以创建一个包含传递给它的参数的临时文件?

我可以使用 和 反引号将文件的内容粘贴到命令中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。)

相关内容