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