"find" 명령의 기본 색상 가용성을 테스트하고 지원하는 기본 색상을 출력하려면 어떻게 해야 합니까?

"find" 명령의 기본 색상 가용성을 테스트하고 지원하는 기본 색상을 출력하려면 어떻게 해야 합니까?

find다음 기본 색상이 지원되는지 확인하기 위한 스크립트를 작성 중입니다 .

  • 정규식
  • 시간
  • 아르템
  • +/-를 사용하는 inum

지금까지 나는 이것을 생각해 냈습니다.

find / -mindepth 0 -maxdepth 1 -inum +0 -exec echo "ok:inum+-" \; 2>&1 | head -n 1

이 명령은 마스터 노드를 이해하는 경우에만 "ok:inum+-"를 출력해야 합니다.

문제는 일치하는 항목을 찾기 위해 find에 의존한다는 것입니다. 그렇지 않으면 아무 것도 출력되지 않습니다.

이상적으로 테스트의 기본 프로그램은 찾은 내용에 신경 쓰지 않아야 하며 도구가 오류로 인해 중단되지 않는 한 항상 에코를 수행해야 합니다.

포기 -exec echo …하고 호출의 종료 코드를 확인할 수 있다는 것을 알고 있지만 find이를 기반으로 "ok:" 문자열을 어떻게 인쇄합니까?

아, 어떤 해결책이라도 있어야 할 것 같아요한 줄각 테스트의 기본입니다.

답변1

stderr에 어떤 것이 있는지 감지할 수 있습니다.

find_supports() {
  [ -z "$(find / -prune "$@" 2>&1 > /dev/null)" ]
}

그 다음에:

if find_supports -inum +0; then...
if find_supports -exit 2; then...
if find_supports -maxdepth 1; then...

일부 조건자는 find지원되지만 호환되지 않는 방식입니다.

예를 들어 기본값은 -regexBSD의 기본 정규 표현식을 기대하는 반면 GNU는 .findfindemacs

설명접미사-mtime/ 도 구현에 따라 -size다릅니다.

또한 위의 내용 은 의 표준 이고 구현에 있으므로 -depth// 테스트에 사용할 수 없습니다 .-delete-mindepth-prune-depth-maxdepth-mindepth

관련 정보