![전달된 인수가 포함된 임시 파일을 생성하는 명령이 있습니까?](https://linux55.com/image/36791/%EC%A0%84%EB%8B%AC%EB%90%9C%20%EC%9D%B8%EC%88%98%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20%EC%9E%84%EC%8B%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
및 백틱을 사용하여 파일 내용을 명령에 붙여넣을 수 있습니다 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이라고 가정합니다.)