Solaris에서의 "grep" 사용법

Solaris에서의 "grep" 사용법

나는 "grep" 시스템 명령을 실행하는 함수가 포함된 R 패키지를 작성했습니다. 이 패키지는 CRAN에서 릴리스되었으며 Solaris 플랫폼에서 테스트하면 오류가 반환되었습니다. 이는 Solaris에서 "grep"의 사용법이 다르기 때문일 수 있습니다. 다음은 이 패키지가 실행하는 명령의 예입니다.

grep --include=\*\.txt --colour=always -n -r -e 'PATTERN'

이 명령은 현재 폴더, 하위 폴더 등에서 발견된 모든 "txt" 파일에서 "PATTERN" 패턴을 재귀적으로 검색합니다(재귀 검색).

이 명령으로 생성된 오류 메시지는 없으며 오류가 발생했다는 것만 알고 있습니다. Solaris에서 동등한 명령은 무엇입니까?

답변1

이 문제의 핵심은 POSIX 호환성과 관련이 있다고 생각합니다. grepPOSIX 표준에 명시된 도구입니다. 의견에서 지적했듯이 POSIX 사양에는 또는 옵션이 grep포함되어 있지 않습니다 . 실제로 이러한 옵션은 GNU의 일부이며 POSIX 사양에 지정된 것 이상의 기능을 추가합니다 . GNU 매뉴얼은 여기에서 찾을 수 있습니다:--include--colourgrepgrepgrephttps://www.gnu.org/software/grep/manual/grep.html

Solaris에서 기본 grep도구는 Sun/Oracle이 제공하는 또 다른 POSIX 호환 구현입니다. 물론 이 구현은 여기에 필요한 옵션을 지원하지 않습니다. Solaris 10 맨페이지를 찾을 수 있습니다.여기, Solaris 11을 찾을 수 있습니다여기.

이 제한은 grepSolaris의 명령을 초과합니다. 예를 들어, dateSolaris의 명령은 GNU의 명령보다 유연성이 떨어집니다 date. Solaris 10의 명령은 ps또한 프로세스 명령줄을 80자로 자릅니다. 이러한 문제에 대한 솔루션/해결책으로 마침내 Solaris 10 및 11에서 GNU 도구를 사용할 수 있습니다.이번 품질검사찾을 수 있는 위치와 설치 방법에 대한 자세한 내용을 확인하세요.

GNU 도구가 Solaris 시스템에 설치되고 도구 이름이 사용되는 경우 a가 g명령 이름의 접두어로 사용됩니다. date따라서 , gdate, , 등이 grep됩니다 . ggrep귀하의 경우 이 명령을 사용하면 ggrep필요한 GNU 특정 옵션(또는 확장)을 지원하므로 문제가 해결될 수 있습니다.

여기서 발생할 수 있는 문제는 Solaris 시스템에 GNU 도구를 설치할 필요가 없다는 것입니다. 이러한 패키지를 설치하려면 몇 가지 추가 작업이 필요합니다. 대상에 GNU 도구가 없으면 이 ggrep명령을 사용할 수 없습니다.

일반적으로 POSIX 배포판 간의 이식성을 목표로 하는 솔루션은 반대 접근 방식을 취합니다. 각 플랫폼에 특정한 도구를 사용하는 대신 솔루션은 POSIX 사양을 준수하도록 의도적으로 수정되었으며 특정 구현에 특정한 확장을 사용하지 않습니다. 이는 솔루션이 모든 POSIX 호환 시스템에서 일관되게 작동하도록 보장하는 유일한 방법인 경우가 많습니다.

관련 정보