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ı?
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ı?
Yanıtlar:
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.
!ben ne olduğunu bilmek isterdim ... bayağı tehlikeli !-4çalıştırmadan önce tam olarak yaptı. Yoksa önce mi gösteriyor? Güzel özet!
!-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;)
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:
!lsAz önce koştuysanız ls /some/long/pathve cdyapmak istiyorsanız, şunları yapın :
cd !$Daha fazla bilgi için:
Tuş bileşimini kullan Ctrl- r, bash geçmişinde arama yapmak için anahtar kelime kullanabilirsiniz.
Hızlı bash anahtar bağlama başvurusu: http://ss64.com/bash/syntax-keyboard.html
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.