find 명령의 +를 이스케이프해야 합니까?

find 명령의 +를 이스케이프해야 합니까?

\+Bash에 다음 코드가 있는데 이를 제거 하고 간단히 사용할 수 있는지 궁금합니다.+

   find "$fdir"                                \
      -type f -name "*.org" -o -name "*.texi"  \
      -exec head -n "$n" {} \+                 \
   | grep --color -e ^ -e '^==>.*' 

답변1

+아니요셸의 특수 문자는 따옴표가 필요하지 않습니다.

^여기에는 Thompson 쉘(최초의 UNIX 쉘)이 포함되어 있지만 Bourne 쉘 , fish, rc, es및 .zshextendedglob{}rc인용 필요 및 이전 버전 fish. *, (, ), >는 대부분의 쉘에서 특별합니다.

모든 구현이 여러 매개변수를 허용하는 것은 아닙니다 head. GNU 구현은 head이러한 ==>헤더 행을 인쇄하지만 여러 인수가 전달되거나 이 -v옵션이 사용되는 경우에만 인쇄됩니다.

-o또한 AND(암시적)가 OR( ) 보다 우선한다는 점에 유의하세요 find.여러 개의 '-name' 및 '-exec'가 있는 'find'는 마지막으로 나타나는 '-name'만 실행합니다.), 그래서:

find "$fdir"                                       \
   -type f '(' -name '*.org' -o -name '*.texi' ')' \
   -exec head -v -n "$n" '{}' +                    \
   | grep --color -e '^' -e '^==>.*'

( '...'대신 참조를 사용 "..."하거나 \일관성을 위해 인용문을 사용하십시오.)

Bourne, csh와 같은 쉘에서 사용할 수 있으며 / fish에서는 큰따옴표를 제거해야 합니다. csh/tcsh에서는 다음 으로 바꿀 수 있으므로 개행 문자가 포함되어 있어도 작동합니다.rces"$fdir"$fdir:q$fdir

$fdir주위의 따옴표는 csh와 같은 $n쉘이 아닌 Bourne과 같은 zsh쉘에서만 필요합니다. / 의 참조 연산자 "가 아닙니다 . 둘 다 따옴표 연산자가 아닙니다 (다른 쉘에서처럼 줄 연속을 수행하지만).rces\rc

바라보다Unix 쉘에서 일반 문자와 같은 특수 문자를 사용하는 방법은 무엇입니까?어떤 문자가 어떤 쉘에서 특별하고 이스케이프/인용 방법을 설명합니다.

관련 정보