임시 파일을 처리하는 좀 더 이식 가능한 방법은 사용하는 것 mktemp
입니다. 임시 파일을 만들고 경로를 반환합니다. 예를 들어 :
$ mktemp
/tmp/tmp.zVNygt4o7P
$ ls /tmp/tmp.zVNygt4o7P
/tmp/tmp.zVNygt4o7P
스크립트에서 매우 쉽게 사용할 수 있습니다.
tmpfile=$(mktemp)
echo "Some temp. data..." > $tmpfile
rm $tmpfile
매뉴얼 페이지를 읽으면 필요에 따라 옵션을 설정할 수 있어야합니다. 예를 들어 :
-d
파일 대신 디렉토리를 만듭니다.
-u
이름을 생성하지만 아무 것도 생성하지 않습니다.
를 사용 -u
하면 임시 디렉토리를 매우 쉽게 검색 할 수 있습니다 ...
$ tmpdir=$(dirname $(mktemp -u))
자세한 내용은 mktemp
여기를 참조하십시오 .
Mac OS X 관련 편집 : Mac OSX 시스템을 사용한 적이 없지만 아래 Tyilo의 의견에 따르면 Mac OSX에서는 mktemp
템플릿 (Linux의 선택적 인수) 을 제공해야합니다 . 인용 :
템플릿은 예를 들어 "X"가 몇 개 추가 된 파일 이름 일 수 있습니다 /tmp/temp.XXXX
. 후행 "X"는 현재 프로세스 번호 및 / 또는 고유 한 문자 조합으로 대체됩니다. mktemp가 리턴 할 수있는 고유 파일 이름의 수는 제공된 "X"의 수에 따라 다릅니다. 6 개의 "X"는 mktemp가 56800235584 (62 ** 6) 중 가능한 파일 이름 중 하나를 선택하게합니다.
매뉴얼 페이지는 또한이 구현이에 대한 OpenBSD 매뉴얼 페이지에서 영감을 받았다고 말합니다 mktemp
. 따라서 OpenBSD 및 FreeBSD 사용자들도 비슷한 차이를 볼 수 있습니다 ( 히스토리 섹션 참조).
아마, 아마 당신이 알다시피, 이것은 당신이 당신의 질문에서 찾고있는 임시 디렉토리를 포함하여 완전한 파일 경로를 지정해야합니다. 이 작은 문제는 -t
스위치를 사용하여 처리 할 수 있습니다 . 이 옵션은 인수를 (요구하는 것 같지만 prefix
), 그이 나타납니다 mktemp
에 의존 $TMPDIR
필요한 경우.
대체로 다음을 사용하여 위와 동일한 결과를 얻을 수 있어야합니다 ...
$ tmpdir=$(dirname $(mktemp tmp.XXXXXXXXXX -ut))
이 솔루션을 직접 테스트 할 수 없기 때문에 Mac OS X 사용자의 의견은 크게 감사하겠습니다.
${TMPDIR-/tmp}
유닉스 계열에 사용하십시오 . 임시 파일TMPDIR
에 사용하지 않을시기를 알려주는 (시스템 또는 관리자 또는 사용자가)/tmp
있습니다.