Yanıtlar:
alias cgrep='grep -nR --color'
Kullanımı:
$ cgrep somestring /path/to/dir/or/file/with*/possible/*wild.card
Ayrıca favorilerimden biri:
$ pgrep some-hanging-process
aşağıdaki durumlarda kullanabileceğiniz bazı asılı işlemlerin adıyla eşleşen işlemlerin tüm pidslerini listeler:
$ kill $(pgrep some-hanging-process)
grep
, grep -r
genel olarak grep -R
sembolik bağlantıları geçmediği için genellikle tercih edilmelidir .
Ben grep pezevenk en iyi yolu kullanmak olduğunu tespit ettik ack esasen özyinelemeli grep akıllı görmezden listeyle olan, sonuçların vurgulama rengi ve (örneğin, dizinleri .svn aramaz, yedek dosyaları vb yok sayar) perl normal ifadeleri. Grep'in% 98.6'sını yapmasını istediğiniz şey budur.
Bunu bir takma ad kullanarak grep'i yeniden tanımlamak yerine .bashrc'de ayarladım:
export GREP_OPTIONS="--color=auto"
Benim için bu Linux, MacOSX ve FreeBSD üzerinde çalışıyor.
GREP_OPTIONS
zararlı kabul edilmelidir. Bunun alias
yerine kullanmanızı tavsiye ederim . Buraya bakın: bugs.launchpad.net/ubuntu/+bug/67141
Ortam değişkeni GREP_OPTIONS'dan kaçınmayı öneririm, diğer araçların içine gömülmüş olanlar bile, grep'in her çağrılmasını etkileyecektir. Bu araçlar grep'in bir şekilde davranmasını beklerse ve bu davranışı değiştirirseniz, bu araçları kıracak ve bozacaktır.
Bunun yerine, iyi çalışan bir takma ad oluşturabilirsiniz. Bu, yalnızca etkileşimli kabuğunuzdan grep çağrılarını etkiler (yani kendiniz yazmanız).
En çok sevdiğim son seçenek, grep'i çağıran bir sarıcı komut dosyası oluşturmaktır. Bunu bir takma adla tercih ederim, çünkü bu sarmalayıcıyı diğer programlardan çağırabilirim. Örneğin vim içinde vimgrep ayarlayarak vim içindeki aramalarım komut satırındaki aramalarla aynı şekilde davranır.
$ cat `which grp`
#!/usr/bin/env bash
grep -rI --color --exclude-dir=\.bzr --exclude-dir=\.git --exclude-dir=\.hg --exclude-dir=\.svn --exclude-dir=build --exclude-dir=dist --exclude=tags $*
Bunu kullanarak şunları çağırın:
$ grp pattern dir
Örneğin
$ grp pattern .
geçerli dir ve alt dizinlerdeki tüm metin dosyalarında 'kalıp' örneklerini arayacaktır.
Komut dosyamı 'grep' gölgelemek yerine 'grp' olarak adlandırdığımı fark ettim, böylece grep'i özelleştirilmiş varsayılanlarımla çağırıp çağırmıyorum.
Varsayılan olarak şunları eklerim:
-r : search subdirs recursive
-I : skip binary files
--color : highlight matches in color
--exclude-dir : skip specified directories and their subdirs
--exclude : skip specified files
Herkesin kaynak kontrol dizinlerini atlamak istediğini düşünüyorum: .hg .git .bzr .svn
'İnşa' ve 'dist' atlamak Python-isms'dir ve muhtemelen çoğu insan için geçerli değildir. Hiç şüphe yok ki, çalışırken kendi tanımlarınızı geliştireceksiniz.
'tags' vim gibi araçlarda 'işlev tanımına git' ve benzerleri için kullandığım ctags çıktısıdır. Bu nedenle, kaynak kodumdaki her kelimenin ve sembolün en az bir kopyasını içerir, bu nedenle arama sonuçlarınızdan atlamaya değer.
Sonunda "$ *", "ve komut satırındaki diğer tüm parametrelerin" bash sözdizimidir, böylece normal olarak arama yapmak ve istediğiniz diğer komut satırı bayraklarını geçersiz kılmak için deseni ve dizini iletebilirsiniz. .
--color
Seçenek zaten birkaç kez söz edilmiştir, ama maçları bir ortam değişkenini kullanarak vurgulanır hangi renk yapılandırmak mümkün olduğunu eklemek istiyorum
export GREP_COLOR="1;33"
Renk, referans için ANSI renk kodları kullanılarak kodlanmalıdır
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37
GREP_COLOR
kullanımdan kaldırıldı. GREP_COLORS
Bunun yerine kullanın .
Renkleri ayarlama konusunda herhangi bir örnek görmediğim için, GNU grep için basit bir kurulum:
# turn on colors, natch.
export GREP_OPTIONS="--color=auto"
if [[ $(echotc Co) -ge 256 ]]; then
# 256 color terminals
export GREP_COLORS="mt=38;5;118:sl=:cx=:fn=38;5;18:ln=1;30:bn=37:se=30"
else
# everybody else
export GREP_COLORS="mt=31:sl=:cx=:fn=34:ln=1;30:bn=30:se=30"
fi
Dikkatli olun GREP_OPTIONS
; gibi şeyler dışında --color=auto
kullanmayın yoksa sisteminizde grep kullanan komut dosyalarını bozar.