Kopiowanie bufora przewijania ekranu GNU do pliku (rozszerzona kopia drukowana)


188

Jak łatwo skopiować bufor przewijania ekranu GNU do pliku? Tzn. Mocniejsza wersja polecenia „wydruk”?

Na ekranie GNU mogę użyć „ Ctrl+ A Esc”, aby przejść do bufora przewijania. Mógłbym wtedy zaznaczyć cały bufor i użyć „ Ctrl+ A Ctrl+ ]”, aby wkleić go do bufora Emacsa , a tym samym zapisać go do pliku.

Jest to jednak żmudne. Czy istnieje polecenie Screen, które po prostu skopiuje bufor przewijania do pliku, podobnie jak „wydruk” dla widocznej części ekranu?

Odpowiedzi:


284

Aby zapisać całą zawartość bufora przewijania do pliku, wpisz

Ctrl+ Ai : przejść do trybu poleceń

hardcopy -h <filename>

W starszych wersjach screen, jeśli tylko to zrobisz hardcopy -h, po prostu zapisuje do pliku -h. Zostało to naprawione w wersji 4.2.0, więc hardcopy -hzapisuje hardcopy.Ngdzie Njest bieżący numer okna.


1
Zauważ, że plik zostaje zapisany w katalogu domowym - przynajmniej dla mnie. Dzięki za odpowiedź, btw!
Ritesh

2
@allrite: Zostaje zapisany w $ PWD (jeśli nie podasz pełnej ścieżki), nie ma żadnego specjalnego zachowania.
Pushpendre

9
Tak, ale zostaje zapisany na ekranie $ PWD, w którym uruchomiłeś ekran. Brak w $ PWD sesji ekranowej.
seumasmac,

7
Zauważ, że jeśli masz długi bufor przewijania i nie ma w nim zbyt wiele, zapisany plik może wydawać się pusty, ponieważ pierwsze dziesiątki lub setki wierszy są puste, a zawartość jest na końcu.
Terry Brown

3
Jedna dodatkowa uwaga na temat miejsca, w którym zapisywana jest kopia: Jeśli wykonasz cd do katalogu, a następnie użyjesz, screen -raby ponownie połączyć się z istniejącą sesją, kopia nie zostanie zapisana w aktywnym katalogu wewnątrz ekranu lub w tej, w której byłeś przed użyciem screen -r. Myślę, że zostanie zapisany w katalogu, w którym byłeś, kiedy pierwszy raz zacząłeś sesję ekranową. Możesz to zmienić za pomocą polecenia hardcopydir .
Matthias Fripp

25

Naciśnij Ctrl+ A : bufferfile /tmp/somefile.txt ENTER , a następnie Ctrl+A >

Spowoduje to zapisanie bieżącej zawartości bufora do nazwanego pliku.


Próbowałem tego, a „ctrl-a>” mówi „Nic się nie stało”. Pierwszy krok brzmiał: „Plik bufora to teraz '/tmp/foo.txt'”, ale wydaje się, że nawet nie tworzy tego pliku.

1
Czy na pewno skopiowałeś coś do bufora ekranu za pomocą Ctrl + A [? Wygląda na to, że bufor może być pusty - nie skopiuje całego bufora przewijania, tylko część wybraną za pomocą Ctrl + A [
Roshan

2
Ach, szukałem skrótu, aby skopiować cały bufor bez użycia ctrl-a [

12

TL; DR: ^A:writebuf <filename>

Wydaje się, że OP chce sposobu na użycie wybranej części bufora, który otrzymujesz, wykonując ^ A [, zaznaczając tekst za pomocą spacji jako początku i końca, a następnie zamiast wkleić ^ A], zapisz wynikową wybraną część bufora do pliku.

To działało:

^A:writebuf <filename>

Uwaga: jeden „f” w writebuf


1
Nie? Nie. OP chce zapisać CAŁY bufor, a nie tylko wybraną część. - OP

2
Szczury Ominęło go to tak bardzo
Kevin Mullet

4
Ten post jest nadal przydatny. Dobra robota.
Justin E

1
Odkryłem, że aby to działało na MacOSX, musiałem użyć ścieżki abolute (tj .: /Users/user1/path/to/file.txt)
jhrf

6

Spróbuj hardcopy -huwzględnić cały bufor.


2
To po prostu drukuje w pliku ~ / -h

2
@barrycarter: To mogło się zmienić w nowszych wersjach. Począwszy od ekranu 4.03.01, hardcopy -hpisze hardcopy.N, gdzie Njest bieżący numer okna.
Keith Thompson

4

To działało dla mnie:

Wejdź do trybu edycji ( ~) i wpisz:

:hardcopy -h buff_file

Stworzył ogromny plik, z którego 98% było puste, ale moje logi były w pełni obecne w pozostałych 2%.


-2

Ctrl+ A,: i wydaj polecenie „zaloguj się”.

Lub ustaw go jako domyślny w pliku .screenrc jako „defloguj”.


2
Myślę, że to po prostu zaczyna rejestrować wszystko po uruchomieniu tego polecenia. Nie chcę rejestrować wszystkiego (zbyt szczegółowe). Chcę tylko przechwycić bufor przewijania jako plik.

-3

Do Ctrl+ A, H.

Które zapisuje bieżący ekran w pliku kopii dysku, np hardcopy.0 na ekranie 0. To wydaje się być szybszy sposób niż dzieje Ctrl+ A, :a wpisując drukowanej polecenie.


3
Niestety, to po prostu zapisuje WIDOCZNĄ część ekranu, a nie bufor przewijania.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.