Bash geçmişinden komutları seçme


20

Yukarı düğmesine basmak sıkıcı ve aradığım komutu kaçırabilirim. Bu yüzden historyterminalde yazarken daha önce girmiş olduğum tüm komutları verir, bir sayıya endekslenir. Sadece komutla ilişkili numarayı arayabilmemin bir yolu var mı?


daha interaktif bir seçenek var mı? bunlar çok hata eğilimli
mat

Yanıtlar:


31

Bash tarihi birçok yararlı şey yapabilir ve Strg-rTerry Wang'ın bahsettiği arama, aralarında önemli. Ancak tam olarak istediğinizi yapmak da mümkündür.

Önceki komutu ile tekrar yapabilirsiniz !!. Bununla, önceki komutu da düzenleyebilirsiniz. Örneğin, bir komut için kök ayrıcalıkları almayı unuttuysanız

apt-get install a-long-list-of-packages

hepsini tekrar yazmanıza gerek yok. Bunun yerine sadece arayın

sudo !!

Komutu geçmişinizden belirli bir konumda yeniden çalıştırmak isterseniz, !örneğin,

!3

3. konumda komutu yeniden çalıştırmak için. Bunun üstten sayıldığını unutmayın. Yani geçmişinizde 500 komut saklıyorsanız, !1"500 komut önce" olurdu. Negatif sayılar da kullanabilirsiniz. Örneğin

!-2

ikinci son komutu yeniden yürütür.

Gibi bir dize ile başlayan son komutu da yeniden yürütebilirsiniz

!apt-

"apt-" ile başlayan son satırı yeniden yapar. Dizenin herhangi bir yerde göründüğü son komutu istiyorsanız, şöyle bir şey kullanabilirsiniz:

!?pt-ge

Bash tarihinin yapabileceği daha ilginç şeyler var. Sadece çok çeşitli olasılıklar hakkında bir izlenim vermek için, özellikle tarihin bir komutunun parametresine erişebilirsiniz. Yani

!-5:3:p

üçüncü parametreyi son komuttan beşinciye yazdıracaktır.

EDIT: Rudie'nin aşağıdaki yorumuna ilişkin olarak, standart ayarlarla bu bash geçmişi genişletmeleri gerçekten doğrudan yürütülür. Muhtemelen en iyi böyle açıklanandan: Böyle bir çağrı !-3olup yerini üçüncü son geçmişinizden komuta ve birlikte kabuk tarafından daha sonra idam (değiştirme ile) giriş. Yani, yazarsanız !-3ve basarsanız ENTERve üçüncü son komutunuz ls ~buysa, ls ~yine tekrar yazıp ENTER"kendi başınıza" basmış olmanızla aynıdır .

Bunu istemiyorsanız, kabuk seçeneğini ayarlayabilirsiniz histverify. Kabuk seçeneklerini ayarlamak ve ayarlamak için, shoptkomutta okumak isteyebilirsiniz . İle histverifyset gibi bir çağrı !-3yalnızca komut satırına geçmişinizden değiştirme yazıyor, ama doğrudan yürütmüyor. Yani, konuşmak için, can alıcıya ENTERkendiniz basın - ya da isterseniz kaçının.


Yani !ben ne olduğunu bilmek isterdim ... bayağı tehlikeli !-4çalıştırmadan önce tam olarak yaptı. Yoksa önce mi gösteriyor? Güzel özet!
Rudie

1
@Rudie Bu iyi bir nokta, cevabımı güncelledim. Geçmiş özellikleri çoğunlukla işinizi hızlandırmak ve tuş vuruşlarını kurtarmak içindir. Yani standart "Gerçekten, gerçekten bunu mu demek istiyorsun?" bu amacı en azından kısmen yenerdi. Ve yapabilseniz bile, normalde "çok geri" komutunu çağırmazsınız !-238. İkinci son, üçüncü son, belki de son komutla hatırlamak çok zor olmamalıdır;) Linux'ta olduğu gibi (ve aslında genel olarak bilgi işlemle), ne yaptığınızı bilmeniz beklenir. Ve gerçekten ek güvenlik ağı istiyorsanız, bir shoptuzakta;)
Henning Kockerbeck

16

Evet var. Örneğin, yanında 1234 numaralı bir komut yürütmek istiyorsanız, aşağıdakileri yapın:

!1234

Diğer faydalı şeyler:

  • En son çalıştırdığınız komutu çalıştırmak istiyorsanız, şunları yapın:

    !!
  • En son çalıştırdığınız lskomutu çalıştırmak istiyorsanız, şunları yapın:

    !ls
  • Az önce koştuysanız ls /some/long/pathve cdyapmak istiyorsanız, şunları yapın :

    cd !$

Daha fazla bilgi için:



3

Bir komutun geçmiş numarasını bulduysanız ve tekrar çalıştırmak istiyorsanız, !ardından sayıyı yazın, örn. !1234Ve tuşuna basın Enter. Bu tarih genişlemesinin bir parçasıdır ; Eğer çakmak olabilir düzenleyiciler bunun üzerine.

Komutu çalıştırmadan önce düzenlemek istiyorsanız, fc 1234harici bir düzenleyici çağırır.

Ancak Terry Wang'ın daha önce de belirttiği gibi, geçmişte bir komutu bulmanın genellikle artımlı aramayı başlatmak ( Ctrl+ yürütmek istediğiniz komutu bulduğunuzda Rbasın Enter) veya fc PREFIXönceki komutu yürütmek için + dahil olmak üzere geçmiş numarasını belirlemekten daha hızlı yollar vardır. ile başlayan komut PREFIX.


1

historyKomut tüm komutları ve bunların ilişkili rakamlar gösterilir. 135 numaralı komut satırını çalıştırmadan önce hızlı bir kontrol yapmak istiyorsanız, şunu yazabilirsiniz:

echo !135

Bu size ne yapılacağını gösterecektir.

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.