\+
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
및 .zsh
extendedglob
{}
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에서는 다음 으로 바꿀 수 있으므로 개행 문자가 포함되어 있어도 작동합니다.rc
es
"$fdir"
$fdir:q
$fdir
$fdir
주위의 따옴표는 csh와 같은 $n
쉘이 아닌 Bourne과 같은 zsh
쉘에서만 필요합니다. / 의 참조 연산자 "
가 아닙니다 . 둘 다 따옴표 연산자가 아닙니다 (다른 쉘에서처럼 줄 연속을 수행하지만).rc
es
\
rc
바라보다Unix 쉘에서 일반 문자와 같은 특수 문자를 사용하는 방법은 무엇입니까?어떤 문자가 어떤 쉘에서 특별하고 이스케이프/인용 방법을 설명합니다.