Development Tip

find 명령의 -exec 옵션에 백 슬래시와 세미콜론이 필요한 이유는 무엇입니까?

yourdevel 2020. 12. 30. 19:45
반응형

find 명령의 -exec 옵션에 백 슬래시와 세미콜론이 필요한 이유는 무엇입니까?


Linux 터미널에서 다른 명령을 결합하기 시작했습니다. 다음과 같은 명령에 백 슬래시와 세미콜론이 필요한 이유가 궁금합니다.

find ./ -name 'blabla' -exec cp {} ./test \;

간단한 cp 명령이 다음과 같을 때 :

cp randomfile ./test

\없이;

명령의 끝을 명확하게 나타내야합니까, 아니면 단순히 문서에 필요합니까? 기본 원칙은 무엇입니까?

감사합니다!


세미콜론 앞의 백 슬래시 ;쉘 명령을 구분하기위한 목록 연산자 (또는 &&, ||) 중 하나 이기 때문에 사용됩니다 . 예 :

command1; command2

find유틸리티를 사용 ;하거나 +호출 쉘 명령을 종료합니다 -exec.

따라서 해석에서 특수 쉘 문자를 피하려면 다음 문자 읽기 및 행 연속에 대한 특수 의미를 제거하기 위해 백 슬래시로 이스케이프해야합니다.

따라서 다음 예제 구문이 find명령에 허용됩니다 .

find . -exec echo {} \;
find . -exec echo {} ';'
find . -exec echo {} ";"
find . -exec echo {} \+
find . -exec echo {} +

또한보십시오:


"man find"에서 :

찾을 다음 모든 인수는 ';'로 구성된 인수가 될 때까지 명령에 대한 인수로 간주됩니다. 만난다.

find는 exec의 인수가 종료되는시기를 알아야합니다. 쉘 명령을 종료하는 것은 당연합니다. 쉘도이 문자를 사용하기 때문입니다. 같은 이유로 이러한 문자는 쉘을 통해 삽입 될 때 이스케이프되어야합니다.

참조 URL : https://stackoverflow.com/questions/20913198/why-are-the-backslash-and-semicolon-required-with-the-find-commands-exec-optio

반응형