Here document
컴퓨팅에서 히어 도큐먼트(here document, here-document), 히어 텍스트(here-text), 히어독(heredoc), 히어이즈(hereis), 히어 스트링(here-string), 히어 스크립트(here-script)는 파일 리터럴 또는 스트림 리터럴이다. 마치 별도의 파일인 것처럼 취급하는 소스 코드의 한 부분이다. 이 용어는 비슷한 문법을 사용하는 여러 줄의 스트링 리터럴을 구성하기 위해서도 사용되며 텍스트 안의 줄 바꾸기와 기타 공백(들여쓰기 포함)을 보존한다.
히어 도큐먼트는 유닉스 셸에서 기원하였으며, sh, csh, Tcsh, ksh, bash, zsh 등에서 볼 수 있다. 히어 도큐먼트 스타일의 스트링 리터럴은 다양한 고급 프로그래밍 언어, 특히 펄 프로그래밍 언어(유닉스 셸의 영향을 받은 문법)와 펄에 영향을 받은 언어(예: PHP, 루비)에서 볼 수 있다. 파이썬, Tcl 등의 그 밖의 고급 언어들은 다중 라인 스트링을 위한 다른 기능을 제공한다.
히어 도큐먼트는 파일 또는 문자열로 취급이 가능하다. 일부 셸은 이것들을 Printf 리터럴로 취급하며 이로써 리터럴 내에서 변수 치환과 명령어 치환을 가능케 한다.
유닉스 셸에서 기원한 가장 일반적인 히어 도큐먼트 문법은 <<
와 그 뒤에 붙는 구분 문자 식별자(종종 EOF
또는 END
), 그리고 다음 줄에 인용 텍스트가 시작되며 인용 텍스트를 닫을 때에는 똑같은 구분 문자 식별자가 위치하게 된다. 이러한 문법은 히어 도큐먼트가 스트림 리터럴임을 의미하며 문서의 내용은 선행 명령의 stdin(표준 스트림)으로 리다이렉트된다. 히어 도큐먼트 문법은 "다음 파일로부터 입력을 받는" <
인 입력 리다이렉션 문법과 유사하다.
다른 언어들은 종종 비슷한 문법을 사용하지만 문법과 실제 기능의 세부 사항은 상당히 다를 수 있다. 단순히 스트링 리터럴을 사용할 때 <<
는 인다이렉션(indirection)을 지시하지 않고 시작 구분자를 의미할 수 있다. 루비 등 일부 언어에서 <<
는 입력 리다이렉션을 위해 사용되므로 히어 도큐먼트 스트링 리터럴로부터 리다이렉트하고 싶으면 <<
를 두 번 사용해야 한다.