![`find -!?에서 빼기 기호(-)의 용도는 무엇입니까? -exec`서비스?](https://linux55.com/image/107056/%60find%20-!%3F%EC%97%90%EC%84%9C%20%EB%B9%BC%EA%B8%B0%20%EA%B8%B0%ED%98%B8(-)%EC%9D%98%20%EC%9A%A9%EB%8F%84%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20-exec%60%EC%84%9C%EB%B9%84%EC%8A%A4%3F.png)
존재하다이 답변-!
, in 의 용도는 무엇입니까 find
?
다음 코드를 고려해보세요.
find . -type l -! -exec test -e {} \; -print
이 대안은 동일한 작업을 수행하는 것 같습니다.
find . -type l ! -exec test -e {} \; -print
-!
처럼 보이는 !
것은 다음 표현의 부정을 의미합니다. 이것은 의미가 있습니다. 그런데 왜 !
그때만은 안 되나요? 그러한 구문에 대한 문서를 찾을 수 없는 것 같습니다.
답변1
-!
표준 연산자 이외의 구두점 연산자를 허용하는 것은 GNU find의 명령줄 구문 분석기의 특이한 점입니다 (다른 구두점 연산자( , 및 GNU 전용 연산자 ) !
에도 동일하게 적용됩니다 ). 코드가 기형과 같은 경우를 거부하지 않으면 작성하기가 약간 더 쉬울 것입니다. 그렇지 않으면 오류가 발생 하므로 이를 수락하는 데 아무런 해가 없습니다. POSIX 표준은 이것이 무엇을 의미하는지 말하지 않습니다 . 표준에 관한 한 이는 구현에 의해 정의된 술어이며 구현에서는 이를 자유롭게 사용하여 원하는 것을 의미할 수 있습니다.(
)
,
-!
-!
-!
다음은 GNU find의 코드 작동 방식에 대한 개요입니다.
- 파서 코드에는운영자 목록. 연산자는
-
코드를 약간 더 작고 빠르게 만들기 위해 선도 없이 저장됩니다 . - 이것명령줄 파서수신 전화
looks_like_expression
인수가 술어처럼 보이는지 여부를 결정합니다.-
단일 구두점 문자 연산자를 제외하고 술어는 로 시작합니다 . - 일단 술어가 결정되면,
find_parser
-
선행이 있으면 무시하십시오 . 여기서!
와 의 차이가-!
사라집니다.
looks_like_expression
또는 find_parser
거부 -
뒤에 구두점이 올 수도 있습니다. 그러나 어느 쪽이든 실질적인 이점 없이 추가 코드가 필요합니다.
답변2
이것-! 예제에서 "링크가 아닌 모든 항목 나열"을 의미하는 "-type l" 표현을 부정합니다.
-type l은 "file"이 링크인 경우에만 true가 됩니다. -!
찾기 맨페이지에서:
The POSIX standard specifies parentheses `(', `)', negation `!' and the `and' and `or' operators ( -a, -o).
빼기 기호는 옵션 구분 기호입니다. 다른 명령과 마찬가지로 각 옵션은 빼기 기호로 구분됩니다(예: ls -l). 느낌표(!)의 의미를 바꾸지는 않습니다.