![명령줄에서 여러 줄 파일을 만드는 방법은 무엇입니까? [복사]](https://linux55.com/image/22130/%EB%AA%85%EB%A0%B9%EC%A4%84%EC%97%90%EC%84%9C%20%EC%97%AC%EB%9F%AC%20%EC%A4%84%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
파일에 다음을 입력하려면 어떻게 해야 합니까?
Hi
abcd
사용해 보았지만 echo "Hi\nabcd" >> ab.txt
파일에는 있는 그대로 작성되었습니다( \n
개행 문자가 아닌 포함).
답변1
echo
이스케이프 시퀀스를 존중하도록 지시해야 합니다 .
echo -e "Hi\nabcd" >> ab.txt
답변2
답변3
나는 사용하는 것이 좋습니다bash 쉘 함수가 호출됩니다.여기 문서. 당신이 설명하는 것을 구현하는 가장 우아한 형태인 것 같습니다. 무엇보다도 여러 줄의 내용은 읽을 수 없고 구분된 긴 \n
문자열 대신 출력 파일에 있는 내용과 똑같습니다.
cat > ab.txt <<EOL
Hi
abcd
EOL
여기의 태그는 EOL
끝을 찾기 위해 무엇을 찾아야 하는지 쉘에 알려줍니다.여기 문서. 정확히 일치하지 않는 것을 선택하도록 단어를 임의로 선택할 수 있습니다.여기 문서내용 그 자체. 장점은 쉘을 대신 사용할 수 있다는 것입니다 ${VARIABLES}
. 이런 일이 발생하지 않도록 하려면 항상 여는 태그 단어(첫 번째만!)를 따옴표( )로 묶어 '
이를 방지할 수 있습니다.
저는 개인적으로 다음과 같은 작은 구성 파일을 생성하기 위해 환경을 설정할 때 초기화 스크립트에서 이것을 많이 사용합니다.
cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER
답변4
따옴표를 사용하여 게임을 플레이할 수도 있습니다.
% echo 'Hi
> abcd' >> ab.txt
"Hi" 다음에 "Enter"를 누르면 bash에 이를 입력할 수 있습니다. Bash는 명령 계속 프롬프트로 ">"를 사용합니다. 어떤 이유로 백슬래시를 사용하여 별도의 반환을 피할 수 없습니다.