Önceki komutların çıktısından metin kullanma


16

Nisan 2015 EDIT: Aynı sorunuz varsa http://xiki.org/


Terminallerin nasıl çalıştığını bilmiyorum, ama kendimi sık sık önceki bir komut çıkışından terminal penceresi geçmişimde olan metin (kopyalama, değiştirme, vb.) Kullanmanın kolay bir yolunun olmasını diliyorum.

Ben böyle düşündüm:

Bir komut girmek üzere bash kabuğumdayım ve ekranda birkaç satır yukarıda olan bir şeyi yazmam gerektiğini fark ettim. Fareye ulaşabilir ve onu seçebilirim, ama bundan nefret ediyorum. Şu anda gerçekten istediğim şey, tüm terminalimin dev bir Vim tamponu haline gelmesi, hepsi: istemler, yazdığım komutlar ve bu komutlardan çıktı. Her şey. Ve sonra birkaç satır yukarı atlayabilirim, belki biraz düzenleyebilirim ve biraz metin sorabilirim. Ardından, bash kabuk moduna dönün ve ne istersem mevcut komut satırına yapıştırın.

Bazı seçenekler olduğunu biliyorum:

  • Doğal olarak, ihtiyacım olan metni doğrudan bir komutun çıktısından bir dosyaya veya bir sonraki komuta doğru yönlendirin. Ancak bunun için önceden planlamanız veya komutu geçmişinizden yeniden yürütmeniz gerekir (çıktının çağrılar arasında değişmeyeceğini varsayalım).

  • Fareye ulaşmak ve kopyalanacak metni seçmek için. Topal, sinir bozucu, keşke bunu yapmamalıydım, (bu GUI stackexchange sitesi değil, değil mi? =)

  • (Mac OS X) Terminal uygulamamın "Metni farklı dışa aktar ..." seçeneğini kullanmak ve terminal metnini bir dosyaya kaydetmek için. Sonra dosyayı açın ve onunla çalışın. Neredeyse, ama neden diskteki bir dosyaya kaydetme adımından geçiyorsunuz?

Yani soru şu: Bu durumda ne yapıyorsunuz? Bu senaryoda yararlı olabilecek herhangi bir hile, araç, kabuk özelliği var mı? Fareyi kullanmak için kendinizi istifa ediyor musunuz veya yazmanız gereken her şeyi yeniden mi yazıyorsunuz?

Sorun şu ki, şeyleri 'unix yolu' yapmıyorum, ama hadi, bu 2010 ve imlecimden birkaç satır uzakta kolayca bazı metinleri kopyalayamıyorum?



Yanıtlar:


4

Komut dosyasını kullanabilirsiniz (her seferinde temizlendiğinden emin olmak için -f kullanın) ve tüm çıktıyı bir dosyada bulabilirsiniz.

Bir terminal çoklayıcı (ekran, tmux vb.) Kullanın. Örneğin, http://web.mit.edu/gnu/doc/html/screen_11.html# ekranı için

Komut: kopya Kopyalama / geri kaydırma moduna girin. Bu, geçerli pencereden ve geçmişinden yapıştırma arabelleğine metin kopyalamanıza olanak tanır. Bu modda vi benzeri bir tam ekran editörü etkindir ve kontroller aşağıda açıklandığı gibidir.

Diğer terminal çoklayıcılar kesinlikle daha gelişmiş özelliklere sahiptir.


Tamam. Bir 'Terminal Çoklayıcı'nın muhtemelen ihtiyacım olan şey olduğunu öğrendim. Teşekkürler. Ayrıca, 'script' komut ipucu için teşekkürler.
Sergio Acosta

5

Tmux'da (bir terminal çoklayıcı), ekranda gezinebileceğiniz, arabelleği ileri geri kaydırabileceğiniz, metni kopyalayabileceğiniz Vi arabellek moduna geçmek için Ctrl + A- [tuşlarına basabilirsiniz. Varsayılan kısayol aslında Ctrl + B- [ancak bunun yeniden yapılandırılması gerekiyordu. Ayrıca, varsayılan arabellek modu Emacs'tır, ancak Vi olarak yapılandırabilirsiniz.

Tmux göz atın, gerçekten harika bir modern terminal çoklayıcı. Tampon ile çalışmanın yanı sıra, birden fazla pencerede ekranı bölebilir, aynı oturuma birden çok terminalden vb. Bağlanabilirsiniz.

OpenBSD'de tmux temel sistemin bir parçası haline getirildi.

Daha fazla bilgi için tmux man sayfasına bakınız. Ayrıca http://tmux.sourceforge.net/ adresindeki ekran görüntülerine de bakın.


tmux en havalı!
gabe.

4

Emacs, önceki çıktı Mx kabuk tutamacı sürümü. Önceki komutların çıktısını veya ara belleğinizin herhangi bir bölümünü, normal bir arabellek gibi kolayca kopyalayabilirsiniz. Bir vim eşdeğeri olması gerektiğinden eminim.


1
Bu istediğime çok yakın, ama zaten Emacs veya Vim'de olmam gerekiyor. +1
Sergio Acosta

Evet, varsayılan terim + kabuğunuz olabilir. :) Sonra normal metin gezinme tuşlarını minimum olarak kullanırsınız. Daha özel tuşlar öğrendiyseniz , Emac'ların aşağıdaki özelliklerine eshellerişilebilir .
imz - Ivan Zakharyaschev



1

CLI'nız olarak vim kullanmayı mı deniyorsunuz? Sadece birkaç satır yukarıdan çıktıyı seçin ve içinden geçirin:!.


Üzgünüm, seni takip etmiyorum. Lütfen detaylandırabilir misiniz?
roaima
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.