이 중괄호는 배쉬에 의해 홀로 남겨집니다. 이들은 각각 find및 에 속하며 xargs해당 맨 페이지에 설명되어 있습니다.
man find
-exec 명령 ;
명령을 실행 ; 0 상태가 반환되면 true입니다. 찾은 다음의 모든 인수는 구성된 인수 ;가 발생할 때까지 명령에 대한 인수로 간주 됩니다. 문자열 {}은 일부 버전에서와 같이 단독 인수가 아닌 명령 인수에서 발생하는 모든 위치에서 처리되는 현재 파일 이름으로 바뀝니다 find. 이 두 구조는 모두 \쉘로 확장되지 않도록 탈출 하거나 ()로 인용 해야 할 수도 있습니다 . -exec옵션 사용의 예는 예 섹션을 참조하십시오 . 지정된
명령일치하는 파일마다 한 번씩 실행됩니다. 명령은 시작 디렉토리에서 실행됩니다. -exec
조치 사용과 관련하여 피할 수없는 보안 문제가 있습니다 . -execdir대신 옵션을 사용해야합니다 .
-exec 명령 {} +
이 -exec조치 변형은 선택된 파일 에서 지정된 명령 을 실행 하지만 명령 행은 선택한 각 파일 이름을 끝에 추가하여 빌드됩니다. 명령의 총 호출 수는 일치하는 파일 수보다 훨씬 적습니다. 명령 행은 명령 행을 xargs빌드 하는 것과 거의 같은 방식으로 빌드됩니다. {}명령 내에서 하나의 인스턴스 만 허용됩니다. 명령은 시작 디렉토리에서 실행됩니다. 경우 find만남 오류 약간의 대기 명령이 전혀 실행되지 않을 수도 있습니다, 이것은 때때로 즉시 종료 될 수 있습니다. 이 변형은 -exec항상 true를 반환합니다.
-execdir 명령 ;
-execdir 명령 {} +
마찬가지로 -exec, 지정된 명령은 일치하는 파일을 포함하는 서브 디렉토리에서 실행되며, 일반적으로 찾기를 시작한 디렉토리가 아닙니다. 일치하는 파일에 대한 경로를 분석하는 동안 경쟁 조건을 피하기 때문에 명령을 호출하는 훨씬 안전한 방법입니다. -exec 조치 와 마찬가지로 의
+ 형식은 -execdir 일치하는 파일을 두 개 이상 처리하는 명령 행을 빌드하지만 지정된 명령 호출은 동일한 서브 디렉토리에 존재하는 파일 만 나열합니다. 이 옵션을 사용하는 경우 $PATH환경 변수가 참조하지 않는지 확인해야합니다.; 그렇지 않으면 침입자는 실행할 디렉토리에 적절한 이름의 파일을 남겨 두어 원하는 명령을 실행할 수 있습니다 -execdir. 항목 $PATH이 비어 있거나 절대 디렉토리 이름이 아닌 항목도 마찬가지 입니다. 경우 find만남 오류 약간의 대기 명령이 전혀 실행되지 않을 수도 있습니다, 이것은 때때로 즉시 종료 될 수 있습니다. 조치의 결과는 +또는 ;변형이 사용 중인지 여부에 따라 다릅니다 .
-execdir 명령을 {} + 하는 동안 항상 true를 반환 -execdir 명령은 {} ; 경우에만 true를 돌려 명령 을 반환 0.
man xargs
-I 대체 str
초기 인수에서 replace-str 발생을 표준 입력에서 읽은 이름 으로 바꾸 십시오. 또한 인용되지 않은 공백은 입력 항목을 종료하지 않습니다. 대신 구분 기호는 개행 문자입니다. 의미 -x와 -L 1.
-i[ replace-str ], --replace[ =replace-str ]
이 옵션은 동의어입니다 -I-str에 교체 할 경우 교체-STR이 지정됩니다. 는 IF 교체-STR 인수가없는, 효과는 동일하다 -I{}. 이 옵션은 더 이상 사용되지 않습니다. 사용하는 -I대신.
편집 : 여기 왜 배쉬 그 중괄호를 무시가 :
man bash
{ 명부; }
list 는 단순히 현재 쉘 환경에서 실행됩니다. 리스트 는 개행 또는 세미콜론으로 끝나야합니다. 이것을 그룹 명령이라고합니다. 반환 상태는 list의 종료 상태입니다. 메타 문자와 달리주의 ( 및 ) , { 및 } 예약 된 단어와 예약 된 단어가 인식 할 수 있도록 허용되는 경우 발생해야합니다. 단어 분리를 일으키지 않기 때문에 공백이나 다른 쉘 메타 문자로 목록에서 분리해야합니다.
강조 : list는 개행 또는 세미콜론으로 끝나야 합니다.
{}- 의미targets와 함께,에 행동find명령, 그것의 제거는 /rm파일을 발견했다.