Yanıtlar:
Komutun, tarih değiştirme işleminden sonra çalıştırılmak yerine yazdırılmasını istemek için, :p
değiştiriciyi , örn !42:p
. Sonuçta ortaya çıkan komut geçmişe de girilecektir, böylece Updüzenlemek için basabilirsiniz .
Eğer varsa histverify
seçeneği (set shopt -s histverify
), her zaman tarih değiştirmelerin sonucu düzenlemek için bir fırsat olacaktır.
fc
Yerleşik tarih genişleme (hayır kelime koordinat belirleme) sınırlı erişim verir ve harici düzenleyicide bir önceki komutu düzenlemenizi sağlar.
!prefix
İle başlayan son komuta başvurmak prefix
ve ile başlayan son komuta başvurmak için kullanabilirsiniz . Ne aradığınızı biliyorsanız, bu çok zaman kazandırabilir .!?substring
substring
history | less
Önceki geçmişe göre arama yapmanın başka bir yolu da artımlı aramadır: Ctrl+ tuşlarına basın Rve aradığınız şeyin alt metnini girmeye başlayın. Arama dizesinin önceki oluşumuna gitmek için Ctrl+ düğmesine Rve çok ileri gittiyseniz Ctrl+ tuşuna basın S. Dışındaki çoğu tuşları Ctrl+ R, Ctrl+ S, Backspaceve sıradan karakterler artan arama sona erdirmek ve olağan etki (, sen ulaştınız doğrultusunda imleci hareket ettirmek için örneğin ok tuşları var Enterkomutu çalıştırmak için).
stty -ixon
Ctrl-s çalışmadan önce yapmanız gerekecek.
Ctrl-s
önemli, yoksa biri benim gibi sıkışıyor .
Başka bir küçük olan: Alt+#
Geçerli satırı yorumlar ve tarih arabelleğine taşır.
Bir komut satırı oluşturduğunuzda ve örneğin bir dosyayı bulmak için geçici bir komut vermeniz gerektiğinde, Alt+ tuşlarına #basmanız, diğer komutu vermeniz , tarihe geçmeniz, yorum yazmanız ve devam etmeniz yeterlidir.
Esc
, #
çalışır
Enter tuşuna basmadan önce geçmişi genişletmek için sihirli alanı kullanabilirsiniz. .İnputrc'nizde, uzayı sihirli uzaya eşleyin:
$if Bash
Space: magic-space
$endif
Şimdi, bir tarih belirtiminden sonra bir boşluk yazdığınızda, derhal genişletilir - düzenlemek de isterseniz kullanışlı!
Varsayılan olarak history-expand-line
bağlı olan komuta bir göz atın Alt+^
. Yerinde, daha sonra düzenleyebileceğiniz çizgiyi genişletir.
Kullanarak Ctrl+r
arama geçmişi yapabilirsiniz:
pbm@tauri ~ $
(reverse-i-search)`xran': xrandr -o normal
Bulduğun herhangi bir komut düzenlenebilir ...
İhtiyacınız olanı tam olarak bulduğumu düşünüyorum: Çalıştırın shopt -s histverify
ve bir dahaki sefere !n
komut kullanmak istediğinizde çalıştırılmayacak, sadece komut satırına geçilecek ...
!n:p
işe?
Bunu sık sık istemişimdir. Csh (ve tcsh) kullandığımda bir deyim vardı:
!:88*:p
Bu deyim, geçerli komut satırına yazdığınız noktaya, önceki son komutun "son sözcüğüne 88" sözcüğünü ekler. Csh'de, böyle bir ifadenin kelime üretmemesi bir hata değildir. Yani, 88 kelimesine ya da onu takip etmeye gerek yoktur. 88 kelimesi yoksa, bu, yazılan komutun sonuna hiçbir kelime eklemez ve ardından sonuçtaki komut satırını yürütmeden geçmişe iter.
Muhtemelen bildiğiniz gibi,
*! (like !! and! -1) önceki komuttur;
*: 88, 88 kelimesidir (ilk kelime - genellikle komut - sıfırdır) ve csh, böyle bir kelime olmasını gerektirir, ancak ...
*: 88 *, 88 kelimesinden başlayan tüm kelimelerdir ve sonra csh, kelimenin var olmasını gerektirmez;
*: p, print anlamına gelir ancak komut satırını yürütmeyin.
: P ile veya p olmadan, komut satırı komut geçmişine eklenir.
"Neden 88?" Sen merak et? Çünkü ihtiyacım olanla aynı anahtar *. Bu kadar uzun bir süre emirleriniz varsa, belki de:: 888 *: p ihtiyacınız olan şeydir. Maalesef bu, AFAIK bash ile çalışmıyor. Bash sadece söyleyecek
bash: :88*: bad word specifier
Eğlenceli gerçek: emrinizin genellikle ilk olması gerekmez.
> /tmp/foo echo My command is word 3
bash ve csh ile geçerlidir.
Normalde kullanmak Ctrl+ raramak ve daha sonra Ctrl+ eçalıştırmadan satırın sonuna gitmek için.