GNOME Terminal içeriğini ANSI çıkış kodlarıyla nasıl kaydedebilirim?


9

VT100 terminalleri için nispeten basit bir yol var bir dosyaya kaçış kodları ile Terminal içeriğini kaydetmek kullanarak Meta- p:

XTerm.VT100.printAttributes: 2
XTerm.VT100.printerCommand: cat - > file
XTerm.VT100.translations: #override Meta <KeyPress> P: print() \n

Biraz etrafına baktım ve bunun varsayılan GNOME Terminal + XTerm + Bash'de çalışması için bir çözüm bulamıyorum.

Ben do not pencerenin içeriğiyle sadece bir görüntü istiyorum.

Görünüşe göre GNOME Terminal bunun için bir düzeltme alabilir , ancak hangi sürüme dahil edileceği hakkında bilgi yok ve son güncellemeden bu yana neredeyse üç yıl geçti ...


Ne yazık ki, bunu yapmanın bir yolu yok. Bakınız: askubuntu.com/q/20739
Zaz

@Josh Bence bu aynı soru. Bir komuttan tüm çıktıları kaydetmek istemiyorum, aksine Terminal penceresindeki tüm görünür çıktıları kaydetmek istiyorum.
l0b0

Yanıtlar:


3

Ne yazık ki, kutudan çıkan cevap: Bu mümkün değil.

Diğer cevabımda, bunu yapmak için komut dosyasının nasıl kullanılacağını listeledim, ancak belirttiğiniz gibi bazı farklılıklar var. Diğer yol kaynağı derlemek veya kararsız bir sürüm kullanmaktır.

Gnome Terminali Kaynak Tarball

Raring'deki sürüm 3.6.1'dir, bu nedenle bu kaynağa bakabilirsiniz. Terminal penceresinin içi. 115 satırındaki c:

/*
 * We don't want to enable content saving until vte supports it async.
 * So we disable this code for stable versions.
 */

#include "terminal-version.h"

#if (TERMINAL_MINOR_VERSION & 1) != 0
#define ENABLE_SAVE
#else
#undef ENABLE_SAVE
#endif
#endif

Seçenekler:

  1. Bunun altına #define ENABLE_SAVE ekleyin.
  2. Sürümü dengesiz olarak değiştirin.
  3. .DEB'nin kararsız bir sürümünü indirin.

Bu yardımcı olur umarım.


Bu ANSI çıkış tuşlarını mı yoksa sadece metni mi kaydeder?
l0b0

Doğruladım ve vte_terminal_write_contents () şu anda ANSI kodları yazmak için görünmüyor, şu anda, orijinal yanıtım en doğru "Ne istersen mümkün değil (kutunun dışında)." Geliştirici fikriniz varsa, işlevi termainal-window penceresinde yeniden yazabilirsiniz. C 3340 save_contents_dialog_on_response (...) 3372 satırında vte_terminal_write_contents çağrısının nerede yapıldığını görebilirsiniz. Bu sitenin kapsamı dışında olduğu için daha fazla ilerlemeyeceğim. Diğer terminaller bunu, yardımcı programlarınızı yeniden derlemekten çok daha düşük bir maliyetle sunar.
LimpingNinja

100. Mümkünse, bunu ve diğer cevabınız arasında bölebilirim, çünkü ikisi de istediğimin% 90'ını yapıyor.
l0b0

3

Ne yazık ki, kutudan çıkan cevap: Bu mümkün değil.

Terminalinizde her zaman komut dosyası çalıştırarak ve tüm çıktıları günlüğe kaydederek bunu düzeltmeye çalışmanın iki yolu vardır. Gnome-terminalini açın, Düzenle -> Profil Tercihleri'ne gidin , ardından Başlık ve Komut sekmesine gidin ve özel komutunuz için bunu kullanın:

bash -l -c 'script -q -c bash $HOME/sessionlogs/$BASHPID.sessionlog.$(date +%Y%m%d-%H%M).txt'

$ HOME altında 'sessionlogs' olduğundan emin olun.

Diğer yol kaldırıldı ve bu soruya ikinci bir cevap olarak eklendi.


Gerçekten de, bir repaste sırasında oluşan yazım hatasını düzeltmek için verilen cevap düzeltildi. İkisinin ilişkisiz olduğunu kabul ettiğim için, 'yeniden derleme' seçeneğini de ayırıyorum.
LimpingNinja

less -rçıktıyı aslında basılı olarak gösterir - Teşekkürler!
l0b0

0

Terminal çıkışları da dahil olmak üzere bir dosyada depolanan terminalin tüm giriş ve çıkışlarını almak için kabuklarınızı komut dosyası (1) üzerinden çalıştırabilirsiniz .


1
Bu farklı bir kullanım durumu. scriptsonra içerik kaydetmek için kullanılamaz ve sadece görünür çıktı kaydetmez .
l0b0

1
Emin misiniz? Doğru gerçeği sonra komut dosyaları kaydedemezsiniz, ama bunu test ve llonunla bazı dosya izinleri çıktı zaman tüm çıktı kaydetti.
Matt

0

Ekran denilen bir paket var - VT100 / ANSI terminal öykünmeli bir terminal çoklayıcı.

Göre bir kılavuz sayfasına ekranında Ubuntu Kılavuzlar web sitesinde , ekran iddia ediyor

Fiziksel bir terminali birkaç işlem arasında (genellikle etkileşimli kabuklar) çoğaltan tam ekran bir pencere yöneticisi. Her sanal terminal bir DEC VT100 terminalinin işlevlerini ve ek olarak ISO 6429'dan (ECMA 48, ANSI X3) çeşitli kontrol işlevlerini sağlar. 64) ve ISO 2022 standartları (örn. Satır ekleme / silme ve çoklu karakter kümeleri için destek) VT100 / ANSI terminal öykünmeli bir terminal çoklayıcı '.

ve ekranı çalıştırırken :

Ctrl ah (basılı) Geçerli pencerenin basılı kopyasını "hardcopy.n" dosyasına yazın.

Koşuyorum, GNOME Terminal yargılandı screenve yazarakCtrl ah

ekranı çalıştırma ve yazma Ctrl Alt h

Gedit'te açıldığında benim hardcopy.1 dosyamın çıktısı:

basılı kopya.1 Gedit'te açıldı

Ekranı Ubuntu 13.04'ün raring / ana yazılım deposunda bulabilirsiniz .

Varsayılan olarak yüklenmez.


-1

Hm, bu kaçış kodlarını kopyalamayacak, ancak metni kapmak için Düzenle -> Tümünü Seç menüsüne gidip tuşuna basıp CtrlShiftC(i) panoyu bir düzenleyiciye veya (ii) türüne yapıştırabilir cat > filenameve tuşuna basabilirsiniz CtrlShiftV.


Bu farklı bir kullanım durumudur - Açıkça belirtildiği gibi ANSI kaçış kodlarını dahil etmek istiyorum.
l0b0

-1

man history çıkış karakterleri için geçmiş genişlemesi arayın. history Sorduğun şeyi yapabileceğine inanıyorum .


manSayfada alakalı hiçbir şey bulamadım . Lütfen daha spesifik ol.
l0b0
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.