Düzenleme için numaralı geçmiş komutunu nasıl geri çağırabilirim?


17

İle sık sık değişiklik arıyorum history | grep 'string'

Geçmişimdeki geçmiş satır numarasıyla birlikte komutların bir listesini alıyorum), örn.

history | grep 'git'

  755  git status
 1535  git push origin master
 1570  git merge origin/one-146
 1667  git reset --hard origin/master

Şimdi hatırlamak ve bir seferde bir komut yürütebilirsiniz !nnn, örneğin:

!755
git status
# On branch master
nothing to commit, working directory clean

Sorum şu: Nasıl düzenleme için komutlar hattında bir numaralı geçmişi komuta ve konaklama hatırlama ve değil , bir yol 'olduğu gibi' hemen yürütmek !yapar, bu yüzden geri dönüşü bastırılarak peform birkaç şey değiştirebileceğini?

Yanıtlar:


12

O zamandan beri buna başka bir yaklaşım benimsedim - ![line-number]:p

Bu, ifadeyi yazdırır ve tarihe ekler, ancak gerçekte çalıştırmaz. Daha sonra yukarı ok yaparım ve istediğiniz gibi değiştiririm.

Bazı metne dayalı geçmiş komutlarını çağırmak için bunu hgdiğer adım ( alias hg='history | grep ') ile birleştiriyorum .

Misal:

$ hg checkout

17140   git checkout README.rdoc
17143   git checkout master
17201   git checkout README.rdoc
17204   git checkout master
17923   git checkout .bashrc
18151   git checkout v311

Ben ctrl- r(ters geçmiş arama) ek olarak bunu kullanın çünkü bazen belirli bir dize için tüm olasılıkların hemen bir listesini görmek için tercih - sadece 1 satır çıktı ctrl- rgösterir. Sonra hg [string]ben o zaman yapacağını ![line-number]search_stringolduğu gibi hg checkoutyukarıda gösterilen.


8

Eğer ayarlarsanız histverify seçeneği , örneğin

shopt -s histverify

daha sonra tüm geçmiş değişikliklerin derhal yürütülmesi yerine düzenleme için getirilir. Daha sonra komutu yürütmek için Enteryazdıktan sonra bir kez yerine iki kez basmanız gerekir !755.

İle keyfi listeye keyfi metin aktarabilirsiniz history -s. fc -nlBelirli bir geçmiş girişini listelemek için bunu ile birleştirin .

history -s "$(fc -nl 755 755)"

ardından Upen son geçmiş girdisinin ne olduğunu hatırlamak için düğmesine basın .


6

Ctrl+ İle geçmişte arama yapabilirsiniz R. Geçmiş girişi uzunsa, fareyi (aramayı durduran klavyeyi değil) kullanarak yeniden düzenleme komutunun bir bölümünü kopyalayıp yapıştırın.

@Rijsg'nin yorumladığı gibi, aramayı durdurmak ve düzenlemeye başlamak için (sol ve sağ) okları veya eşdeğer tuşları kullanabilirsiniz.


2
Herhangi bir ok tuşu veya eşdeğer komut ( Ctrl-aörneğin), geçerli geçmiş girişini komut isteminde bırakmadan durdurur. @Michael'in ne istediğine bağlı olarak bu yeterli olabilir veya olmayabilir.
njsg

2

.Bashrc dosyanızı komut satırında vi düzenleyicisini kullanacak şekilde yapılandırırsanız, komut satırı düzenlemelerini çok daha az karmaşık hale getirir.

1, "set -o vi" etkinleştirildikten sonra, sadece "<esc> k" tuşuna basabilir , sonra geçmiş dosyasını olduğu gibi gitmek için "k" tuşuna basmaya devam edebilirsiniz , eğer bir girişi geçerseniz, "j" kullanın aşağı inmek .

NOT: vi kullanırken, iki mod vardır: komut moduna girmek için komut ve düzenleme ESCAPE KEY ONCE düğmesine, ardından eklemek için a, A, i, I, vb.

Vi'deki basit imleç paneli: sol = h, aşağı = j, yukarı = k, sağ = l http://linuxmeister.net/vi/vi-Summary.jpg

Bu işi yapmak için gereken tüm girişleri ekledim: http://linuxmeister.net/Notes/bashrc-simple.html

Böylece, yukarıdaki çok yararlı bilgilere dayanarak, "tarih" kullanmak ve yürütmeden OLMADAN "tarih" bir satır çağırmak mümkün. (SONRASI TEŞEKKÜR EDERİZ!)

eğer shopt listelenir ve histverify "kapalı" a! derhal YÜRÜTÜLECEK,

.bashrc'nize eklediyseniz veya yazdıysanız: shopt -s histverify , sonra a! düzenlemeye izin verir, örneğin:

history
    1  more .bashrc
    2  history
    3  shopt
    4  . ./.bashrc
    5  shopt | grep hist
    6  history
    7  alias
    8  history
    9  shopt
   10  history

->! 5

! 5 tuşuna bastığımda aşağıdaki komut görünür, ancak ÇALIŞMAZ

### histverify "açık" ise.

shopt | grep hist
cmdhist         on
histappend      on
histreedit      off
histverify      on
lithist         off

Linus ve Richard'ın UNIX'ten yararlanmak için Linux ve GNU araçları oluşturduğunu unutmayın. Vi editörü (Bill Joy tarafından yaratılmıştır), UNIX ve Linux'un HER dağıtımında olduğu gibi ustalaşmak için en iyi araçlardan biridir.

Diğer tüm komut satırı düzenleyicilerinin yüklenmesi ve ek yazılım gerektirmesi gerekir. Linux'ta bir GUI kullanmak (Firefox, Thunderbird ve OpenOffice dışında) Dizel 4x4'ünüzü 1968 VW Beetle ile çekmek gibidir ... işe yarayacaktır, ancak kesinlikle bir anlam ifade etmiyor.

Kernigan'ın bir GUI hakkında söylediklerini hatırlayın, "gördüğünüz tek şey."


-1
echo !number

sonra yukarı oka basın, kelimeyi kaldırın echove gerisini düzenleyin; yürütmek için enter tuşuna basın.

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.