Geçmiş yardımcı programını kullanarak önceden girilmiş bir komutu yeniden çalıştırmadan nasıl kopyalanır?


14

historyÖnceki girilen komutların listesini almak için CentOS komutunu kullanabilirsiniz , ancak, gibi bir şey yaparsanız: !372geçmiş başvurulan komutu çalıştırmayı deneyecek.

Geçerli imleç görünmesi için önceki çalıştırma komutuna ihtiyacım var. İşte bir örnek:

[dev@home ~]$ previous_command_no_execute!372  

Yanıtlar:


25

Peki, bunu komut satırınıza koyun:

$ !372

Ardından tuşuna ve ESCardından düğmesine basın CTRL+E. Bu, gerçekte çalıştırmadan komut satırında otomatik olarak genişler. (ayrıca env vars dahil olmak üzere satırdaki diğer her şeyi genişletir)

Bu sadece Bash üzerinde çalışıyor, bildiğim kadarıyla.


Evet, bu kesin çözüm.
centosnoob

1
Zsh'de bir çözüm için, yazdıktan sonra sekmeye basın !372ve sizin için genişletecektir.
Reid

10

CtrlrOrijinal komuttaki bazı karakterleri kullanabilir ve sonra yazabilirsiniz.

(reverse-i-search)`/etc': sudo /etc/init.d/apache2 restart

yukarıda yazdım Ctrl-r /etcve bu sudo /etc/init.d/apache2 restarttarihi tarihe çekti


6

history | grep 372 çalışmalı, değil mi?

Düzenle:

Ayrıca echo !372 > /dev/clip, komut dizinini panonuza koymak gibi bir şey yapabilirsiniz .


her zaman benim için çalıştı ...
voretaq7

Hayır, bu sadece belirli komutun daha önce çalıştığını bulur.
centosnoob

O zaman hem kendim hem de @ voretaq7 sorunuzu yanlış anlıyorlar. Belki biraz daha açık olabilir misiniz?
MDMarra

@MDMarra Soruyu güncelledim. Umarım biraz daha ışık tutar.
centosnoob

@centosnoob güncellemenize bakarak ve konsolunuzun bir fare ve kopyala yapıştır özelliğini desteklediğini varsayarsak (ve bu günlerde kopyala yapıştırma özelliği olmadan doğrudan terminal tarzı konsolda olmak nadirdir ) kopyalama ve yapıştırma çözümü gerçekten en az acı verici . vi tarzı komut düzenleme benim cevap özetlendiği gibi başka bir seçenek, ama vi fanatik değilim ve hatta ben ... vi tarzı komut satırı düzenleme kullanmayın
voretaq7

4

MDMarra kolay yolu verdi ( history|grepve masaüstü ortamınızı kullanarak kopyaladığınız / yapıştırdığınızı varsayalım ). Masaüstü ortamınız veya fareniz yoksa işe yarayan şeyi zor yoldan sağlayacağım .

Kabuğunuzu bash kullandığınızı varsayarsak:

$ set -o vi
$ ESC372k

(Eğer şimdi on line, 372 komutları önce ran komutu gerekecek ve olacağım vitarzı komut modu. Edit kullandığınız yaptığınız gibi ex/ vi)


İlginç. Bu sadece erken "set -o vi" çalıştırdıysanız işe yarıyor gibi görünüyor. Bunu bash profiline veya başka bir şeye koymanız gerekebilir.
Matt

Şokla gerçekleştirdiğiniz şeylerden biri "Ben her zaman vi kullanıyorum, neden bash'daki satırları düzenlemek için vi bağlamaları kullanmıyorum". Alışmak biraz zaman alır, o zaman herkesin kullandığı emacs tarzı ciltlemeler garip ve işe yaramaz hisseder.
cjc

@Matt Evet - düzenleme modunuzu vistil düzenlemesine ayarlamanız gerekir . Bu olmalıdır yakında senin kadar çalışacak set -o vive tüm tarihi için çalışması gerekir (düzenleme modu kabuğu'nun komut geçmişi ve diğer şeyler için sadece bir arayüz).
voretaq7

@cjc vi'yi editörüm olarak kullanıyorum, ancak komut satırımı düzenlemek için vi tarzı bağlamaları kullanmıyorum (bunu sadece kafamın üst kısmındaki vi modunda nasıl yapacağımı biliyordum, ancak diğerleri yayınladı emacs-modunda eşdeğer daha kolay olabilir :).
voretaq7

4

İstediğinizi yapmanın en basit ve en hızlı yolu çalıştırmaktır:

!372:p

ardından Enterve


0

Bir masaüstü sistemi veya sunucusunda mısınız?

Kabuk açık olan Kubuntu masaüstü sistemimde fare ile vurgulamayı destekler. Genellikle metni fareyle vurgulayıp yapıştırmak için orta fare düğmesini tıklıyorum. Bu sizin için işe yarar mı?

Böylece komut için grep yapabilirsiniz. Metni vurgulayın. Farenin orta düğmesiyle yapıştırın, sonra düzenleyin.

Daha iyi bir yol olabilir ama bu benim için işe yarıyor.


0

otomatik yapıştırma yapmak için bir komut yoktur, ancak herhangi bir komutu yürütmeden önce düzenlemek için bir düzenleyiciye geri çağırabilirsiniz. bu aradığınız şeyi başarabilir, ancak komuttan çıkıldıktan sonra iptal edilir, bu nedenle iptal etmek isterseniz, düzenleyicinizden çıkmadan önce düzenleme arabelleğinizi temizlemeniz gerekir.

fc-e vi 372372

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.