나는 오늘 포함 된 작은 스크립트를 작성
grep -q ^local0 /etc/syslog.conf
검토 중에 동료 는 Bourne 쉘에서 "파이프"를 의미 ^local0
하기 때문에 인용 할 것을 제안했습니다 ^
. 이 주장에 놀라서, 나는 이것을 언급 한 모든 참조를 추적하려고했습니다. 인터넷에서 찾은 것이 이것이 문제라고 제안한 것은 없습니다.
그러나 bsh
AIX 7에서 (Bourne 쉘이라고 주장 하는) 구현에는 실제로 다음과 같은 동작이 있습니다.
> bsh
$ ls ^ wc
23 23 183
$ ls | wc
23 23 183
내가 시도한 다른 "Bourne shell"구현 중 어느 것도 이런 식으로 작동 ^
하지 않습니다 (즉, 쉘 메타 문자로 간주되지 않습니다). 나는 sh
CentOS (실제 bash)와 sh
FreeBSD (bash가 아닌 )에서 시도했다 . 시도 할 다른 시스템이 많지 않습니다.
이 동작이 예상됩니까? 어떤 쉘 ^
이 파이프 메타 문자로 간주 됩니까?
[ x"$foo" = x"bar" ]
.
bsh
Bourne Shell이 아닙니다. 이 이름은 AIX의 Bourne Shell에서만 남용됩니다. bsh
오히려 1984 년 UNOS (첫 번째 UNIX 복제본)의 H.Berhold AG에서 소개 한 쉘입니다. AIX는 1984
^
zsh와 정규 표현식 공간에서 부정 문자 라는 것을 알고 있습니다. 별도의 의견으로, 일반적으로 쉘 간 이식성을 위해 grep 표현식에 작은 따옴표를 사용하는 것이 좋습니다.