"<<" 리디렉션의 용도는 무엇입니까? [복사]

"<<" 리디렉션의 용도는 무엇입니까? [복사]

<<잘 이해가 안 되기 때문에 리디렉션의 예를 찾고 있습니다 . 내가 아는 것은 <표준 입력으로 사용할 지정된 파일의 내용을 보내는 것입니다. 예를 들면 다음과 같습니다.

cat < file.txt

그러나 나는 그것이 무엇을 의미하는지 이해하지 못합니다 <<. "다음 텍스트 줄을 표준 입력으로 허용합니다"라는 설명을 보았지만 여전히 혼란스럽습니다.

답변1

이를 통해 스크립트에 입력하는 명령 텍스트를 외부 파일이 아닌 스크립트 자체에 포함시킬 수 있습니다. 따라서 다른 파일에서 리디렉션하는 대신 스크립트와 입력 데이터가 포함된 단일 파일에 입력을 넣을 수 있습니다.

이는 쉘 스크립트를 awk, Perl 또는 기타 스크립트 언어와 혼합할 때 특히 유용합니다.

<<리디렉션 뒤의 단어가 리디렉션의 끝으로 간주된다는 점은 주목할 가치가 있습니다 .

간단한 예:

#!/bin/sh
cat << EOF > output.txt
line 1
line 2
line 3
EOF
echo done

output.txt그러면 다음 내용이 포함된 파일이 생성됩니다 .

line 1
line 2
line 3

done스크립트는 터미널에 인쇄됩니다.

답변2

여기서는 문서라고 합니다.

이는 명령 셸에서 파일의 일부를 정의하려는 경우 주로 사용됩니다. 즉

cat <<foobarbaz > /tmp/file.txt
hello 
world
$$
foobarbaz

/tmp/file.txt파일을 채울 것입니다

hello
world
1234

1234가 프로세스 ID라고 가정합니다.

답변3

이 연산자는 다음 줄의 텍스트를 표준 입력으로 사용하는 here 문서를 구현합니다. 하지만 명령줄에서는 이 리디렉터를 사용하지 않을 것입니다. 왜냐하면 다음 줄은 표준 입력이므로 리디렉션할 필요가 없기 때문입니다. 대신 이 명령을 스크립트의 일부로 사용하여 명령에 데이터를 전달할 수 있습니다. 대부분의 리디렉션 연산자와 달리 코드 바로 뒤에 오는 텍스트는 <<파일 이름이 아니라 끝을 표시하는 데 사용되는 단어입니다. 입력하다. 예를 들어, 입력하면 문자열만 포함된 줄 (문자열 뒤에 공백도 포함되지 않음)이 나타날 때까지 입력이 허용 someprog << EOF됩니다 .someprogEOF

참고: 명령줄에서 입력을 받는 일부 프로그램에서는 을 눌러 입력을 종료해야 합니다 Ctrl+D. 이 키 입력은 ASCII(American Standard Code for Information Interchange)를 사용하는 파일 끝 표시에 해당합니다.

관련 정보