Bunun için bir grep yapmak istiyorum \resources\
. Bunu nasıl yaparım?
Denedim:
grep \resources\
grep \\resources\\
grep "\resources\"
grep "\\resources\\"
Bunun için bir grep yapmak istiyorum \resources\
. Bunu nasıl yaparım?
Denedim:
grep \resources\
grep \\resources\\
grep "\resources\"
grep "\\resources\\"
Yanıtlar:
Ters eğik çizgi birçok uygulama için özel bir karakterdir:
kabuk dahil: mümkünse tek tırnak kullanarak başka bir ters eğik çizgi kullanarak veya daha zarif bir şekilde kaçmanız gerekir :
$ printf '%s\n' foo\\bar 'foo\bar'
foo\bar
foo\bar
Burada komut foo\bar
, terminalde olduğu gibi yankılanan iki argüman aldı .
(Yukarıda, birçok uygulama printf
yerine ters eğik çizgi yorumunu da yaptım (burada bir geri alma karakterine genişleyecektim ) kullandım).echo
echo
\b
Fakat ters eğik çizgi de özel bir karakterdir grep
. Bu komut gibi birçok özel dizileri tanır \(
, \|
, \.
, vb. Benzer şekilde \\
, gerçek bir ters eğik çizgi karakteri için çift ile grep beslemeniz gerekir . Bu, kabuk kullanmanızın gerektiği anlamına gelir:
grep 'foo\\bar'
Veya eşdeğer olarak:
grep foo\\\\bar
(Her iki satır da kabuğa foo\\bar
argüman olarak iletmesini söyler grep
).
Diğer birçok komut argümanlarında ters eğik çizgileri yorumlar ... ve iki kaçış seviyesine ihtiyaç vardır (biri kabuk yorumundan, biri komut yorumundan kaçmak için).
Bu arada, kabuk için, tek tırnak '…'
karakteri yorumlama her türlü engellemeye, ancak çift tırnak sadece bazıları önler: özellikle $
, `
ve \
içinde aktif karakterleri kalır "…"
.
Ayrıca kullanabilirsiniz fgrep
(sadece hangi grep
ile -F
bayrak). Bu, deseni sabit bir dize olarak yorumlamaya zorlar (yani \
değişmez olarak davranır \
). Yine de ters eğik çizgileri kabuk tarafından genişlemekten korumanız gerekecektir.
grep -F '\resources\'
..\
ve hatta '..\\'
istediğim sonuçları alamadım. grep -F '..\'
bana istediğimi aldım! Teşekkürler
grep
bir ters eğik çizgiyi temsil etmek için dört ters eğik çizgi gerektirir :
grep "\\\\resources\\\\"
grep
sadece başka bir ters eğik çizgiden kaçmak için 1 ters eğik çizgi gerektirir, ancak kabuk da ters eğik çizgilerin alıntılanmasını gerektirir. Çift tırnak ( "
), ters eğik çizgi önermez, ancak ters eğik çizgi yapar, bu nedenle örneğinizdeki çift tırnak hiçbir şey yapmaz ve bunun yerine 4 ters eğik çizgi gerekir.
grep
.
grep '\\resources\\'