나는남성스타일 활용정보다음과 같은 출력을 설명하는 쉘 함수 man find
:
NAME
find - search for files in a directory hierarchy
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
DESCRIPTION
This manual page documents the GNU version of find. GNU find searches the directory tree rooted at each
given starting-point by evaluating the given expression from left to right, according to the rules of
precedence (see section OPERATORS), until the outcome is known (the left hand side is false for and opera‐
tions, true for or), at which point find moves on to the next file name. If no starting-point is speci‐
fied, `.' is assumed.
OPTIONS
` 문자에 대해 오류 메시지가 나타납니다.
다음의 간단한 스크립트는 오류를 보여줍니다.
~$ cat <<EOF
`.'
EOF
bash: bad substitution: no closing "`" in `.'
heredoc
문자열을 붙여넣어 에코하는 것이 멋진 방법이라고 생각했습니다 .따옴표 등의 내용을 이스케이프 처리할 필요가 없습니다.
제가 틀린 것 같아요 :/
누군가 이 동작을 설명할 수 있나요? ` 문자가 허용 됩니까 heredoc
?
편집 2: 답변을 수락했습니다.여기에 인용된 문서 <<'END_HELP'
, 하지만 이런 종류의 완전한 수동 출력에는 사용하지 않을 것입니다.선행하다제안
편집 1:(나중에 읽을 수 있도록)사용 제한여기에 인용된 문서tput
에서 사용이 차단되었습니다 here-document
.
이를 위해 나는 다음을 수행했습니다.
- 따옴표 없이는 명령이 실행될 때
here-document
사용됩니다 .tput
- 백틱을 이스케이프 처리하여 "잘못된 대체" 오류를 방지합니다.
tput
내부용here-document
예:
normal=$( tput sgr0 ) ;
bold=$(tput bold) ;
cat <<END_HELP # here-document not quoted
${bold}NAME${normal}
find - search for files in a directory hierarchy
${bold}SYNOPSIS${normal}
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
${bold}DESCRIPTION${normal}
This manual page documents the GNU version of find. GNU find searches the directory tree rooted at each
given starting-point by evaluating the given expression from left to right, according to the rules of
precedence (see section OPERATORS), until the outcome is known (the left hand side is false for and opera‐
tions, true for or), at which point find moves on to the next file name. If no starting-point is speci‐
fied, \`.' is assumed.
END_HELP
unset normal ;
unset bold ;
여기에서 오류의 원인으로 이스케이프된 백틱을 기록해 두세요.
\`.'
답변1
백틱은 명령 대체를 도입합니다. 여기에 있는 문서는 참조되지 않으므로 이는 셸에서 해석됩니다. 명령 대체에 종료 백틱이 없기 때문에 쉘이 불평합니다.
이 문서를 인용하려면 다음을 사용하세요.
cat <<'END_HELP'
something something help
END_HELP
또는
cat <<\END_HELP
something something help
END_HELP
이 문제 해결에 대한 귀하의 의견과 관련하여:
유틸리티는 완전한 매뉴얼 자체를 출력하는 경우가 거의 없지만 요약 또는 기본 사용 정보를 제공할 수 있습니다. 색상이 지정되는 경우는 거의 없습니다(예를 들어 출력이 터미널이나 호출기로 전달되지 않을 수 있으므로 less
). 실제 매뉴얼은 일반적으로 groff
전용 매뉴얼 페이지 포맷터를 사용하여 포맷됩니다.mandoc
그리고 코드와 완전히 별도로 처리됩니다.