Bash Shell History Range nasıl elde edilir


9

Belirli bir aralıktaki geçmiş girişlerini nasıl alabilirim / filtreleyebilirim?

Büyük bir geçmiş dosyam var ve sıklıkla kullanıyorum

history | grep somecommand

Şimdi, hafızam oldukça kötü ve komuta girdiğim sırada başka neler yaptığımı da görmek istiyorum.

Şimdilik bunu yapıyorum: eşleşin, söyle 4992 somecommand, sonra yaparım

history | grep 49[0-9][0-9]

bu genellikle yeterince iyidir, ama daha doğrusu daha çok yapmayı tercih ederim, yani 4972'den 5012'ye kadar olan komutları, yani 20 komuttan önce ve 20 komuttan sonra.

Daha kolay bir yol olup olmadığını merak ediyorum. Sanırım özel bir senaryo sırada, ama belki daha önce başka biri benzer bir şey yaptı.


Tarih manipülasyonu için 2 yerleşik vardır: gnu.huihoo.org/bash-2.02/html_node/bashref_73.html
LAFK, Reinstate Monica'ya

Yanıtlar:


13

grepMaçı çevreleyen bazı satırları yazdırmayı söyleyebilirsiniz , örneğin, önce 3 ve sonra 5:

history | grep -B 3 -A 5 somecommand

grep -C 4eşittir grep -A 4 -B 4.

Ancak çoğu zaman önceden kaç satır istediğinizi tam olarak bilmezsiniz. Bu yüzden daha az kullanın ve içinde arama yapın. Aramayı komut satırından bile başlatabilirsiniz:

history | less +/somecommand

1
çok havalı hile less! Bunu yapabileceğinizi bilmiyordum
Warren

Gerçekten çok güzel ... Gerçekten aradığım zamanlarda bile aradığım komutu "görebiliyorum" ama başka bir ilgili komut kullandığımda bunu hatırlıyorum! İyi şeyler tnx.
Khalil Gharbaoui

8

Fc'yi deneyin:

fc -l 4972 5012

... bu bir bash yerleşik komutudur. (bu yüzden tcsh'de denemeyin:>)


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.