이에 대한 나의 논란의 여지가 있는 의견이 답변사용해야 하는지에 대한 질문에fgrep또는grep-F
휴대성을 위한 스위치(예: ) 가 함께 제공됩니다 grep -F
. 현재까지 밝혀진 주요 내용은 다음과 같습니다.
grep -F
:
- POSIX 표준입니다.
- GNU는 지원 중단을
grep
발표했습니다fgrep
.
fgrep
:
- 역사적으로 이는
grep -F
옵션보다 먼저 옵니다. - GNU grep은 더 이상
fgrep
사용되지 않는 것으로 선언되었지만 역사적 사용으로 인해 여전히 이를 고수하는 것 같습니다.
오래된(아주 오래된) 시스템에 대해 생각해 보면 일부 시스템은 그렇지 않다는 것을 알 수 있습니다 grep -F
(이런 일이 발생할 가능성은 매우 드물다고 생각합니다). 하지만 정말 아주 오래된 기계에 대해 걱정하고 이에 대한 POSIX 표준을 피할 필요가 있을까요?
이전 시스템(사용할 수 없다고 말되거나 주장되는 grep -F
)을 포함하여 현재 상황을 고려하면 지원되는 시스템이 더 많이 있습니다 fgrep
.
반면에, 미래를 내다본다면 이는 POXIS 표준으로서 fgrep
역사가 되고 승리하게 될 것입니다 .grep -F
또한 이제 더 나은 이식성을 위해 POSIX 표준을 사용하는 것이 상식이 아닙니까?
답변1
grep -F
POSIX입니다. fgrep
아니요. 스크립트를 사용 grep -F
하고 POSIX에 의존한다는 점을 분명히 하세요 grep
. 필요한 것은 명시적으로 선언된 종속성뿐입니다.
둘 다 사용해도 될 것 같은데...
if command -v fgrep
then _grepf(){ fgrep "$@"; }
else _grepf(){ grep -F "$@"; }
fi >/dev/null
...하지만 그런 일을 하는 것은 번거롭고 대개 시간 낭비입니다. 종속성 목록에서 가장 낮은 일관성 수준을 설정하고 표준이 나머지를 처리하도록 허용합니다.