전달된 인수가 포함된 임시 파일을 생성하는 명령이 있습니까?

전달된 인수가 포함된 임시 파일을 생성하는 명령이 있습니까?

및 백틱을 사용하여 파일 내용을 명령에 붙여넣을 수 있습니다 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이라고 가정합니다.)

관련 정보