
및 백틱을 사용하여 파일 내용을 명령에 붙여넣을 수 있습니다 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"
(이 답변에서는 쉘이 bash, zsh 또는 ksh93이라고 가정합니다.)