find 명령에 대한 매뉴얼 페이지의 요약 섹션이 잘못되었습니까?

find 명령에 대한 매뉴얼 페이지의 요약 섹션이 잘못되었습니까?

그래서 특정 명령을 실행하는 방법을 잊어버렸을 때, 인터넷 검색을 시작하기 전에 매뉴얼 페이지를 보는 습관을 들이려고 노력했습니다.

오늘 find 명령에 대한 매뉴얼 페이지를 보았고 요약 섹션에서 명령 형식을 다음과 같이 지정합니다.

SYNOPSIS
       find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

이는 옵션이 경로 앞에 오고 그 다음 표현식 앞에 와야 함을 의미하지 않습니까? 아니면 개요에 순서가 명시되어 있지 않습니까?

find를 사용할 때 다음과 같이 옵션 앞에 경로를 지정해야 합니다.

find . -cmin -10 -ls

답변1

-cmin그리고 -ls술부그것의 일부이다표현하다, 옵션이 아닙니다.

옵션의 끝을 표시할 수 있지만 --그 뒤에도 조건자를 허용할 수 있습니다.

GNU에서는 find생략이 허용됩니다.:

find -- -L

불평할 것이다알 수 없는-L 술어( -L그건 유효 하지만옵션-follow실제로 동등한 것이 있습니다술부).

그렇기 때문에 비록

find "$file"

좋다

wc "$file"

$file로 시작할 때 제대로 작동하지 않습니다 -.

이렇게 하면 wc -- "$file"문제가 해결되지만 wc(특별한 경우 제외 file='-') 해결되지는 않습니다 find -- "$file". FreeBSD는 find이미 find -f "$file"이것을 하고 있습니다.

답변2

주문 find이 매우 오래되었으며 날짜가 다음 날짜로 거슬러 올라갑니다.유닉스 V5. 당시에는 명령줄 구문 규칙이 지금만큼 확고하게 확립되어 있지 않았습니다. 일부 오래된 프로그램은 이러한 규칙에서 벗어납니다.

원래는 find선택의 여지가 없었습니다. 첫 번째 인수는 탐색할 디렉터리이고 나머지 인수는 표현식일 것으로 예상합니다. 각 파일에 대해 평가된 표현식은 파일을 인쇄해야 하는지 여부(또는 보다 일반적으로 파일로 수행할 작업)를 나타냅니다. 표현식은 연산자와 피연산자로 구성됩니다. find 연산자는 옵션이 다음과 같이 시작하는 것과 같은 이유로 다음과 같이 시작합니다 -(일부 구두점 제외) -. 왜냐하면 쉘에서 특별한 의미가 없어 입력하기 쉽지만 파일 이름과 구별할 수 있기 때문입니다. 로 시작하는 파일 이름 으로는 이 작업을 수행하지 마세요 -.

캐리어는 선택사항이 아닙니다. 왜? options 구문이 없기 때문에... options 철자(로 시작 -)가 있지만 다른 컨텍스트에서 사용됩니다.

나중에 find옵션으로 간주될 수 있는 몇 가지 사항이 생겼습니다. -depth이와 같은 전역 설정은 실제로 표현에 아무런 의미가 없습니다. find옵션이 없기 때문에 일관성을 위해 표현식에 포함됩니다 .

나중에 find일반적인 옵션 구문(비옵션 전의 옵션)을 사용하여 일부 옵션을 얻습니다. 이는 동일한 옵션을 지원 -H하고 -L심볼릭 링크 동작을 구성하는 다른 많은 프로그램과의 일관성을 위해 수행됩니다.

시놉시스에는 이런 내용이 나와 있습니다 -H.-L할 수 있는먼저 경로, 그다음 표현식입니다. 요약 문법이 항상 모든 가능성을 표현하는 것은 아닙니다. 그것이 완전하다면 읽을 수 없을 것이므로 여러분이 아는 것은 그것이 가능성을 제공한다는 것뿐입니다. 가능한 것과 불가능한 것을 정확히 알고 싶다면 더 읽어야 합니다. 예를 들어, -H, -L등은 경로 앞에만 있으면 어떤 순서로든 나타날 수 있습니다.

관련 정보