GNU ekran geri kaydırma arabelleğini bir dosyaya kopyalama (genişletilmiş basılı kopya)


188

GNU Screen scrollback buffer'ı bir dosyaya nasıl kolayca kopyalayabilirim? Yani, 'basılı kopya' komutunun daha güçlü bir versiyonu mu?

GNU ekranında, geri kaydırma arabelleğine girmek için " Ctrl+ A Esc" kullanabilirsiniz. Daha sonra tüm arabelleği işaretleyebilir ve bir Emacs arabelleğine yapıştırmak için " Ctrl+ A Ctrl+ ]" kullanabilir , böylece bir dosyaya kaydedebilirim.

Ancak, bu sıkıcı. Ekranın görünür kısmı için 'basılı kopya' gibi bir kaydırma çubuğunu bir dosyaya kopyalayacak bir Ekran komutu var mı?

Yanıtlar:


284

Geri kaydırma arabelleğinin tüm içeriğini bir dosyaya yazmak için

Ctrl+ Ave : komut moduna geçmek için

hardcopy -h <filename>

Eski sürümlerinde, screensadece yaparsanız hardcopy -h, sadece dosyaya yazar -h. Bu, 4.2.0 sürümünde düzeltildi, bu nedenle geçerli pencere numarasının nerede olduğunu hardcopy -hyazar .hardcopy.NN


1
Dosyanın ana dizine kaydedildiğini unutmayın - en azından benim için yaptı. Cevabınız için teşekkürler, btw!
Ritesh

2
@allrite: $ PWD'ye kaydedilir (eğer tam yol vermezseniz), özel bir davranış yoktur.
Pushpendre

9
Evet, ancak ekranı başlattığınız $ PWD'ye kaydedilir . Değil ekran oturumun $ PWD içinde.
seumasmac

7
Uzun bir geri kaydırma arabelleğiniz varsa ve içinde çok fazla şey yoksa, kaydedilen dosyanın ilk onlarca veya yüzlerce satır boş olduğu ve içeriğin sonunda olduğu için boş görünebileceğini unutmayın.
Terry Brown

3
Basılı kopyanın kaydedildiği konum hakkında başka bir not: Bir dizine cd yazar ve screen -rvarolan bir oturuma yeniden bağlanmak için kullanırsanız , basılı kopya ekranın içindeki etkin dizine veya kullanmadan önce bulunduğunuz dizine kaydedilmez screen -r. Ekran oturumunu ilk başlattığınızda bulunduğunuz dizine kaydedildiğini düşünüyorum. Bunu hardcopydir komutuyla değiştirebilirsiniz.
Matthias Fripp

25

Ctrl+ A : Bufferfile /tmp/somefile.txt tuşuna basın ENTERve ardından Ctrl+A >

Bu arabellek mevcut içeriğini adlandırılmış dosyaya yazacaktır.


Bunu denedim ve "ctrl-a>" "Hiçbir şey olmadı" diyor. İlk adımda "Bufferfile artık '/tmp/foo.txt'" yazıyordu, ancak bu dosyayı oluşturuyor bile görünmüyor.

1
Ctrl + A [kullanarak ekran arabelleğine bir şey kopyaladığınızdan emin misiniz? Arabellek boş gibi görünüyor - tüm geri kaydırma arabelleğini kopyalamayacak, sadece Ctrl + A kullanarak seçtiğiniz kısım [
Roshan

2
Ah, ctrl-a kullanmadan tüm arabelleği kopyalamak için bir kısayol arıyordum [

12

TL; DR: ^A:writebuf <filename>

OP, ^ A [yaparken tamponun seçilen kısmını kullanmak, başlangıç ​​ve bitiş olarak boşluk kullanarak metin seçmek ve ardından yapıştırmak için ^ A] kullanmak yerine elde edilen seçili kısmı kaydetmek için bir yol istiyor gibi görünüyor. arabellek bir dosyaya.

Bu işe yaradı:

^A:writebuf <filename>

Not: writebuf'ta bir 'f'


1
Hayır hayır. OP sadece seçilen parçayı değil ENTIRE arabelleğini kaydetmek istiyor. - OP

2
Sıçanlar! Bu kadar
Kevin Mullet

4
Bu yayın hala yararlı. Aferin.
Justin E

1
Bu çalışmayı ekranın MacOSX sürümünde yapmak için mutlak bir yol kullanmam gerektiğini buldum (yani: /Users/user1/path/to/file.txt)
jhrf

6

hardcopy -hTüm tamponu dahil etmeye çalışın .


2
Bu sadece ~ / -h dosyasında bir basılı kopya yapar

2
@barrycarter: Bu, daha yeni sürümlerde değişmiş olabilir. Ekran 4.03.01 itibariyle , geçerli pencere numarası nerede hardcopy -hyazıyor . hardcopy.NN
Keith Thompson

4

Bu benim için çalıştı:

Düzenleme moduna ( ~) girin ve şunu yazın:

:hardcopy -h buff_file

% 98'i boş olan büyük bir dosya oluşturdu, ancak günlüklerim kalan% 2'de tamamen mevcuttu.


-2

Ctrl+ A,: ve 'oturum aç' komutunu verin.

Veya .screenrc dosyanızda varsayılan olarak 'deflog açık' olarak ayarlayın.


2
Bu komutu çalıştırdıktan sonra her şeyi günlüğe kaydetmeye başladığını düşünüyorum. Her şeyi kaydetmek istemiyorum (çok ayrıntılı). Sadece geri kaydırma arabelleğini bir dosya olarak yakalamak istiyorum.

-3

Ctrl+ A, Yapın H.

Bu zor bir kopya dosyası içine geçerli ekran kaydeder, örneğin ekranın 0. için hardcopy.0 Gidiyor daha hızlı bir yolu olarak görünmektedir Ctrl+ A, :ve yazarak basılı komutu.


3
Ne yazık ki, bu ekranın GÖRÜNÜR kısmını kaydediyor, kaydırma çubuğunu kaydetmiyor.
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.