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 printfyerine ters eğik çizgi yorumunu da yaptım (burada bir geri alma karakterine genişleyecektim ) kullandım).echoecho\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\\barargü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 grepile -Fbayrak). 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
grepbir ters eğik çizgiyi temsil etmek için dört ters eğik çizgi gerektirir :
grep "\\\\resources\\\\"
grepsadece 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\\'