Bugün küçük bir senaryo yazdım
grep -q ^local0 /etc/syslog.conf
İnceleme sırasında, bir iş arkadaşı ^local0
alıntılanmasını önerdi çünkü ^
Bourne kabuğunda "boru" anlamına geliyor. Bu iddia beni şaşırttı, bundan bahseden herhangi bir referansı izlemeye çalıştım. İnternette bulduğum hiçbir şey bu bir sorun olduğunu önerdi.
Bununla birlikte, bsh
AIX 7'ye (Bourne kabuğu olduğu iddia edilir) uygulanmasının aslında şu davranışa sahip olduğu ortaya çıkıyor:
> bsh
$ ls ^ wc
23 23 183
$ ls | wc
23 23 183
Denediğim diğer "Bourne kabuğu" uygulamalarının hiçbiri bu şekilde davranmadı (yani ^
hiç bir kabuk metakarakteri olarak kabul edilmez). sh
CentOS (ki gerçekten bash olan) ve sh
FreeBSD (ki bash olmayan) üzerinde denedim . Denemek için çok fazla sistemim yok.
Bu davranış bekleniyor mu? Hangi mermiler ^
bir boru metakaraktı olarak kabul edilir?
[ x"$foo" = x"bar" ]
.
bsh
Bourne Kabuğu değil. Bu ad yalnızca AIX'deki Bourne Kabuğu için kötüye kullanılır. bsh
1984 yılında H.Berhold AG'de UNOS'ta (ilk UNIX klonu) tanıdığım bir kabuk.
^
zsh ve ayrıca normal ifade alanında bir olumsuzlama karakteri olduğunu biliyorum . Ayrı bir yorum olarak, genellikle kabuklar arasında taşınabilirlik için grep ifadesinde tek tırnak kullanılması önerilir.