Bash boru tesisat Aliasing işlemleri


1

Sık sık gibi bir şey yapacağım grep -R foo . Bir projenin kökeninde. Yararlı, ancak sonuçlar ikili kullanımıyla seyreltiliyor. temp ve umursamadığım dosyaları test et. Bu yüzden ekliyorum 2>&1 | grep -vE “Binary|/tmp/|/test/“, umurumda olmayan şeyleri filtreleyen. Sorun, her zaman yazmak için bir acı. 2 & gt; 1 dahil ve sonrasındaki her şey, sorgudan sorguya aynı kalır. Bu yüzden onu bana izin verecek bir takma ad koymak istiyorum. grep -R foo . <thingie>, şey nerede oldukça kısa bir şey. Takma adları ve ortam değişkenlerini denedim ancak takma adlar yalnızca satırdaki ilk sözcüklerse işe yarar ve ortam değişkenleriyle genişletebilirim ${thingie} ancak bu süreçte boruların vidalandığı görülüyor. Bu işi nasıl yapacağınız hakkında bir fikriniz var mı?


1
Gereksinimlerinizi anlarsam, bir işlev yazabilir ve işlevi bir bash başlangıç ​​dosyasına yükleyebilirsiniz.
fd0

Yanıtlar:


2

Evet bir fonksiyon gitmek için yoludur. Eğer GNU grep'iniz varsa

  1. kullan --exclude-dir seçenek böylece özyinelemeli arama bile onunla uğraşmaz.
  2. kullan --binary-files=without-match İkili dosyaları yok sayma seçeneği (takma ad -I ).

Yani:

mygrep() {
    grep -R --exclude-dir=tmp --exclude-dir=test -I "$@" .
}

Sonra ara

mygrep Foo
mygrep -i foo
mygrep -E '(foo|bar)baz'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.