Yanıtlar:
kullanın:
grep -- -X
İlgili: Çıplak çift çizgi ne anlama geliyor? ( natty hakkında ceviz sayesinde ).
ARGS="-a -b -c"
grep -- "$ARGS"
grep -- "--name awesome"
.
Kısa çizgi Bash'te http://tldp.org/LDP/abs/html/special-chars.html#DASHREF adresinde belirtildiği gibi özel bir karakterdir . Yani bundan bir kez kaçmak sizi Bash'ın yanından geçirir, ancak Grep hala tire (seçenek sunarak) için kendi anlamına sahiptir.
Bu yüzden gerçekten iki kez kaçmanız gerekiyor (belirtilen diğer cevapları kullanmamayı tercih ediyorsanız). Aşağıdaki çalışır / çalışmalıdır
grep \\-X
grep '\-X'
grep "\-X"
Bash'in bir betik / programa nasıl argüman aktardığını denemenin bir yolu, tüm argümanları yansıtan bir .sh betiği oluşturmaktır. Ben zaman zaman oynamak için echo-args.sh adlı bir komut dosyası kullanın, tüm içerir:
echo $*
Ben şöyle çağırıyorum:
bash echo-args.sh \-X
bash echo-args.sh \\-X
bash echo-args.sh "\-X"
Kaptın bu işi.
grep -e -X
hile yapacak.
-P
(ancak bu başka bir hikaye ve burada geçerli değil)).
grep -- -X
grep \\-X
grep '\-X'
grep "\-X"
grep -e -X
grep [-]X
Doğru yol, daha önce de belirtildiği gibi, bağımsız değişkenleri işlemeyi durdurmak için "-" kullanmaktır. Bunun nedeni, aracın kaynağında getopt_long (getopt.h dosyasından GNU C işlevi) kullanılmasıdır.
Bu yüzden aynı fenomeni diğer komut satırı araçlarında fark edersiniz; çoğu GNU aracı olduğundan ve bu çağrıyı kullandığından, aynı davranışı sergilerler.
Bir yan not olarak - getopt_long bize -rlo ve --really_long_option ve yorumlayıcıdaki argümanların birleşimi arasında harika bir seçim sunar.
nawk kullanabilirsiniz
$ nawk '/-X/{print}' file
ls -l | grep "^-"
Umarım bu sizin amacınıza hizmet eder.
grep "^ -X" dosyası
Grep ve dosyadan tüm satırları seçer. "^" harfinde ^ ile başlayan bir satır
-
.
--
anlama geldiğini veya ne anlama geldiğini merak edenler için : unix.stackexchange.com/questions/11376/…