Tôi có thể lưu đầu ra từ một lệnh đầu cuối trước đó chỉ bằng bàn phím không?


12

Tôi vừa dành hai giờ qua để chạy một ddlệnh (hoặc hình ảnh bất kỳ kịch bản "khó làm lại" tương tự nào) từ đĩa CD trực tiếp mà không cần GUI; tất cả những gì tôi có là CTRL+ALT+F#thiết bị đầu cuối Bash "đa cửa sổ" ( ) đáng tin cậy của tôi .

Than ôi, trong khi lệnh ddđã ném ra một số thông báo lỗi khó chịu và thêm một chút thông tin mà tôi muốn giữ lại. Tôi có một ổ USB được cắm vào để tôi có thể ghi dữ liệu, nhưng làm cách nào để có được đầu ra trước đó được lưu dưới dạng tệp văn bản sau khi lệnh đã được chạy?

Nếu đây là một trình giả lập thiết bị đầu cuối bên trong một GUI đẹp, tôi chỉ cần sử dụng chuột để chọn văn bản, sao chép và dán nó vào tài liệu. Và nếu tôi biết lệnh sẽ tạo ra lỗi, tôi sẽ chuyển nó ra một tệp để bắt đầu, nhưng than ôi, đầu ra bổ sung đến như một bất ngờ.

Làm cách nào để lưu đầu ra văn bản từ lệnh trước đó vào tệp mà không chạy lại lệnh? Điều này thậm chí có thể?


Tôi đã tìm kiếm các cách để chọn văn bản trên màn hình, nhưng cho đến nay tôi chỉ tìm cách thực hiện việc này bằng văn bản bạn đã nhập vào dấu nhắc.
IQAndreas

Bạn đã thử sử dụng chuyển hướng đầu ra ??
Eyoung100

2
@ eyoung100 Có phải đó là một từ khác cho "đường ống"? Như trong dd if=/dev/sda of=/backups/sda.img > result.txt. Nếu vậy, vấn đề là tôi đã chạy ddlệnh . Bằng mọi giá, tôi muốn tránh chạy lại lệnh, trong một số trường hợp là không thể.
IQAndreas

2
Giả sử đây là Linux: cài đặt gpm . (Bắt đầu nó nếu cần thiết, ví dụ service start gpm). Quét một vùng trong khi giữ nút chuột trái. Nhập cat > outputfilevà nhấp vào nút chuột phải để dán vùng bạn vừa chọn.
Đánh dấu Plotnick

1
Nếu mục tiêu chỉ là "giữ ... thông tin", thì biện pháp cuối cùng là lấy máy ảnh và chụp ảnh màn hình. (Và, về mặt lý thuyết, sau đó bạn có thể chạy OCR trên đó.)
Scott

Câu trả lời:


15

Một nhân linux nên lưu trữ nhật ký trên màn hình cho vts của bạn trong /dev/vcsa*[ttynum]thiết bị tương ứng .

Đó là lý do tại sao các công việc sau đây:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2

... mà in ...

hey       

/dev/vcsa[ttynum]Thiết bị tương ứng sẽ lưu trữ một phiên bản được mã hóa của văn bản được định dạng trên màn hình, trong khi đó /dev/vcs[ttynum]sẽ là một bãi chứa đơn giản. Các vcsa[ttynum]thiết bị sẽ mã hóa một cặp byte mô tả từng char trên màn hình và các thuộc tính của nó, cũng như một chuỗi ở đầu mỗi trang logic cho biết các dòng, cột được tham chiếu của tty số được .

Như @kasperd chỉ ra, tôi đã sai trước khi cho rằng \aBEL được mã hóa giữa mọi ký tự, trong khi thực tế: Sự kết hợp màu mặc định xảy ra trùng với ký tự chuông.

Đối với mục đích của bạn bằng cách sử dụng /dev/vcs[ttynum]có lẽ là dễ dàng nhất. Đây là một lsự khác biệt:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2 |
sed -n l

... bản in ...

hey       $

... và ...

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcsa2 |
sed -n l

... bản in ...

0\200\000\004h\ae\ay\a$

1
vcsakhông đặt cùng một ký tự giữa tất cả các ký tự. Nó cung cấp cho bạn các cặp byte cho bạn biết ký tự nào trên màn hình và màu sắc của nó. Sự kết hợp màu mặc định xảy ra trùng với ký tự chuông.
kasperd 17/03/2015

@kasperd - cảm ơn bạn. Có tốt hơn không
mikeerv 17/03/2015

Cái đó tốt hơn. 👍
kasperd

2

Đi đến (/ đăng nhập) một thiết bị đầu cuối khác và chạy sudo screendump N > screenoutput.txt, đây Nlà số lượng thiết bị đầu cuối bạn muốn.

Không tồn đọng, tôi sợ. Nếu những bàn giao tiếp ảo đó giữ một cái, tôi chưa bao giờ thấy nó. Nhưng nó mang lại cho bạn tất cả những gì bạn có thể nhìn thấy trên thiết bị đầu cuối đó.


nếu nó hoạt động, có lẽ là do nó lấy nó từ /dev/vcsa*[1-9]*- (đó là những gì tôi đoán là quyền siêu người dùng dành cho) . Các bảng điều khiển linux đã hỗ trợ tồn đọng cho hầu hết các dòng 3. *, tôi nghĩ vậy. Tôi không chắc người ta có thể lấy nó như thế nào (trái ngược với việc sử dụng các /dev/vcsa*[1-9]*thiết bị) nhưng có lẽ có một cách.
mikeerv

Tốt hơn hết là không chuyển sang một giao diện điều khiển khác, vì chuyển đổi sẽ xóa các tồn đọng, chỉ giữ lại những gì hiện đang hiển thị trên màn hình.
Gilles 'SO- ngừng trở nên xấu xa'

@mikeerv Có. Vâng, trang người đàn ông dường như nói rằng nó sử dụng cả hai /dev/vcs$i/dev/vcsa$i. Nó cho một kết quả dễ đọc mặc dù. ;-)
Sidhekin

@Gilles Ah, vậy có tồn đọng không? Nhưng screendumpkhông hiểu điều đó, ngay cả khi tôi ở trong cùng bàn điều khiển.
Sidhekin

1
Bạn có thể xem cuộn lại bằng cách nhập Shift-PageUp một hoặc nhiều lần. Tôi không biết cách nào để sao chép văn bản trong cuộn ngược lại ngoài việc sử dụng chuột qua gpm.
Đánh dấu Plotnick 17/03/2015
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.