Sao chép bộ đệm cuộn màn hình GNU vào một tệp (bản cứng mở rộng)


187

Làm cách nào để dễ dàng sao chép bộ đệm cuộn lại GNU Screen vào một tệp? Tức là, một phiên bản mạnh mẽ hơn của lệnh 'hardcopy'?

Trong màn hình GNU, tôi có thể sử dụng " Ctrl+ A Esc" để vào bộ đệm cuộn. Sau đó tôi có thể đánh dấu toàn bộ bộ đệm và sử dụng " Ctrl+ A Ctrl+ ]" để dán nó vào bộ đệm Emacs , do đó lưu nó vào một tệp.

Tuy nhiên, điều này là tẻ nhạt. Có lệnh màn hình nào chỉ đơn giản là sao chép bộ đệm cuộn vào một tệp, như 'bản cứng' dành cho phần hiển thị của màn hình không?

Câu trả lời:


283

Để ghi toàn bộ nội dung của bộ đệm cuộn vào một tệp, hãy nhập

Ctrl+ A: để chuyển sang chế độ lệnh, sau đó

hardcopy -h <filename>

Trong các phiên bản cũ hơn screen, nếu bạn chỉ cần làm hardcopy -h, nó chỉ ghi vào tệp -h. Điều này đã được sửa trong phiên bản 4.2.0, vì vậy hãy hardcopy -hghi vào hardcopy.Nđâu Nlà số cửa sổ hiện tại.


1
Lưu ý rằng tệp được lưu trong thư mục chính - ít nhất là nó đã làm cho tôi. Cảm ơn câu trả lời, btw!
Ritesh

2
@allrite: Nó được lưu trong $ PWD (nếu bạn không cung cấp đầy đủ), không có hành vi đặc biệt nào.
Pushpendre

9
Có, nhưng nó được lưu trong $ PWD nơi bạn bắt đầu màn hình. Không có trong phiên màn hình $ PWD.
seumasmac

7
Lưu ý rằng nếu bạn có bộ đệm cuộn dài và không có nhiều trong đó, tệp đã lưu có thể trống vì hàng chục hoặc hàng trăm dòng đầu tiên trống và nội dung ở cuối.
Terry Brown

3
Một lưu ý nữa về vị trí lưu bản cứng: Nếu bạn cd vào thư mục và sau đó sử dụng screen -rđể kết nối lại với phiên hiện có, bản cứng sẽ không được lưu vào thư mục hoạt động bên trong màn hình hoặc thư mục bạn đang sử dụng trước khi sử dụng screen -r. Tôi nghĩ rằng nó sẽ được lưu vào thư mục bạn đã ở khi bạn bắt đầu phiên màn hình. Bạn có thể thay đổi điều này bằng lệnh hardcopydir .
Matthias Fripp

24

Nhấn Ctrl+ A : bufferfile /tmp/somefile.txt ENTER và sau đó Ctrl+A >

Điều này sẽ ghi nội dung hiện tại của bộ đệm vào tập tin được đặt tên.


Tôi đã thử điều này và "ctrl-a>" nói "Không có gì xảy ra". Bước đầu tiên đã nói "Bufferfile hiện là '/tmp/foo.txt'", nhưng thậm chí không xuất hiện để tạo tệp đó.

1
Bạn có chắc chắn đã sao chép thứ gì đó vào bộ đệm màn hình bằng Ctrl + A [? Có vẻ như bộ đệm của bạn có thể trống - nó sẽ không sao chép toàn bộ bộ đệm cuộn lại, chỉ là phần bạn đã chọn bằng Ctrl + A [
Roshan

2
À, tôi đang tìm một lối tắt để sao chép toàn bộ bộ đệm mà không sử dụng ctrl-a [

12

TL; DR: ^A:writebuf <filename>

OP dường như muốn có cách sử dụng phần đã chọn của bộ đệm bạn nhận được khi thực hiện ^ A [, chọn văn bản sử dụng khoảng trắng làm bắt đầu và kết thúc, sau đó thay vì sử dụng ^ A] để dán, lưu phần kết quả đã chọn của bộ đệm vào một tập tin.

Điều này đã làm việc:

^A:writebuf <filename>

Lưu ý: một 'f' trong writebuf


1
Không không. OP muốn lưu bộ đệm ENTIRE, không chỉ phần đã chọn. - OP

2
Chuột! Bỏ lỡ nó rất nhiều
Kevin MONS

4
Bài này vẫn hữu ích. Làm tốt lắm.
Justin E

1
Tôi thấy rằng để làm cho nó hoạt động trên phiên bản màn hình MacOSX, tôi đã phải sử dụng một đường dẫn bãi bỏ (ví dụ: /Users/user1/path/to/file.txt)
jhrf

6

Cố gắng hardcopy -hbao gồm toàn bộ bộ đệm.


2
Điều này chỉ tạo ra một bản cứng trong tệp ~ / -h

2
@barrycarter: Điều đó có thể đã thay đổi trong các phiên bản gần đây hơn. Kể từ màn hình 4.03.01, hardcopy -hghi vào hardcopy.N, Nsố cửa sổ hiện tại ở đâu .
Keith Thompson

4

Điều này làm việc cho tôi:

Nhập chế độ chỉnh sửa ( ~) và gõ:

:hardcopy -h buff_file

Nó tạo ra một tệp khổng lồ, trong đó 98% trống, nhưng nhật ký của tôi có mặt đầy đủ trong 2% còn lại.


-2

Ctrl+ A, :và đưa ra lệnh 'đăng nhập'.

Hoặc đặt nó làm mặc định trong tệp .screenrc của bạn là 'deflog on'.


2
Tôi nghĩ rằng điều này chỉ bắt đầu đăng nhập mọi thứ sau khi tôi chạy lệnh đó. Tôi không muốn đăng nhập mọi thứ (quá dài dòng). Tôi chỉ muốn chụp bộ đệm cuộn lại như một tập tin.

-3

Làm Ctrl+ A, H.

Đó là tiết kiệm màn hình hiện tại vào một tập tin bản sao cứng, ví dụ như, hardcopy.0 cho màn hình 0. Nó có vẻ là một cách nhanh hơn đi Ctrl+ A, :và gõ cưng lệnh.


3
Thật không may, điều đó chỉ lưu phần VISIBLE của màn hình, chứ không phải bộ đệm cuộn lại.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.