Cuộn bên trong Màn hình hoặc Tạm dừng đầu ra


383

Tôi sử dụng màn hình cho các tác vụ dòng lệnh của mình trong khi quản lý các máy chủ nơi tôi làm việc. Tôi thường chạy các lệnh nhỏ (chủ yếu là các tác vụ hệ thống tệp) nhưng đôi khi tôi chạy các tác vụ rộng hơn (như DBA).

Đầu ra của những nhiệm vụ đó là quan trọng đối với tôi. Vì tôi sử dụng Ubuntu và OS X (cả Terminal Windows) cho các tác vụ của mình, nhưng tôi cần sử dụng màn hình, nên việc cuộn không khả dụng, do đó, bất kỳ đầu ra dài nào (nghĩ rằng một bảng 500 hàng từ một lựa chọn) là vô hình đối với tôi. Chuột-bánh là ra khỏi câu hỏi.

Khi tôi nói "cuộn là vô hình đối với tôi, tôi có nghĩa là:

hàng đầu trong khi sử dụng màn hình, trong Mac OS X, trong khi cuộn

Tôi đã suy nghĩ về hai lựa chọn:

  1. Tạm dừng (nghĩ phân trang ) đầu ra của một lệnh nhất định. Khi đầu ra bắt đầu, nó sẽ cho tôi đọc những gì đang xảy ra, sau đó tôi nhấn "Enter", sau đó đầu ra tiếp tục cho đến khi không còn gì để hiển thị nữa.

  2. Cuộn bên trong màn hình. Nhưng tôi không biết nếu điều này là có thể.

Tất nhiên, tôi không biết liệu những lựa chọn đó có thực sự khả thi hay không . Nếu là họ, làm thế nào có thể đạt được chúng? Các lựa chọn thay thế khác sẽ được đón nhận.

Câu trả lời:


526

Màn hình có bộ đệm cuộn riêng, vì nó là bộ ghép kênh đầu cuối và phải xử lý một số bộ đệm.

Có thể có một cách tốt hơn, nhưng tôi đã quen với việc sử dụng "chế độ sao chép" (mà bạn có thể sử dụng để sao chép văn bản bằng chính màn hình, mặc dù điều đó cũng yêu cầu lệnh dán):

  • Nhấn kết hợp tiền tố màn hình của bạn ( C-a/ control+ Atheo mặc định), sau đó nhấn Escape.

  • Di chuyển lên / xuống bằng các phím mũi tên ( ).

  • Khi bạn đã hoàn tất, nhấn qhoặc Escapeđể quay lại phần cuối của bộ đệm cuộn.

(Nếu thay vì qhoặc Escapebạn nhấn Enterhoặc Returnsau đó di chuyển con trỏ, bạn sẽ chọn văn bản để sao chép và nhấn Enterhoặc Returnlần thứ hai sẽ sao chép nó. Sau đó, bạn có thể dán C-atheo sau ].)

Tất nhiên, bạn luôn có thể sử dụng moreless, hai máy nhắn tin thường được sử dụng, có thể đủ cho một số lệnh.


5
Ngoài ra, nhấn q thoát khỏi chế độ sao chép mà không sao chép bất cứ điều gì (và đó là một lần nhấn nút ít hơn). Điều này có thể trong phần giải thích vi nhưng liên kết hiện đã bị hỏng.
Nathanael Farley

3
Đồng thời nhấn [Esc] cũng thoát khỏi chế độ sao chép.
Sopalajo de Arrierez

7
có cách nào để lên trang không?
Sungguk Lim

10
Bộ đệm cuộn dường như hỗ trợ các lệnh giống như vi: Cb và Cf để cuộn trang lên / xuống.
Touko

3
Trong chế độ sao chép, các nút PageUp và PageDown của tôi hoạt động. Nhấn đầu tiên chỉ di chuyển một dòng nhưng sau đó nó trang như bình thường.
Ê-li

171

Sử dụng screenbộ đệm như được chỉ ra bởi njsg là một giải pháp tốt. Bạn cũng có thể vô hiệu hóa bộ đệm văn bản thay thế trong thông tin thuật ngữ xterm bên trong màn hình. Khi bị vô hiệu hóa, bạn có thể sử dụng các thanh cuộn (và bánh xe chuột) để cuộn lên xuống.

Thêm phần này vào bạn ~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

Bạn có thể đọc thêm thảo luận ở đây .


1
đặt giới hạn cuộn ngược bằng cách nhập Ctrl + A,:, nhập "cuộn lùi 10000" hoặc bất kỳ giá trị số nào bạn muốn
lobi

2
Sử dụng điều này, các phím tắt điển hình của thiết bị đầu cuối Linux (shift + pg lên / xuống nhà / kết thúc) cũng hoạt động, cảm ơn.
tokland

5
Chỉ riêng mẹo này khiến tôi xem xét lại bằng cách sử dụng màn hình ...
Fish Monitor

5
+1 Thanh lịch hơn giải pháp được chấp nhận.
Ryan Yoosefi

9
chỉ cung cấp cho bạn đầu ra screenđã cung cấp cho bạn kể từ khi bạn bắt đầu - nghĩa là gắn lại ở nơi khác có nghĩa là bạn không thể cuộn lên và xem những gì đã xảy ra trước đó. nhưng bạn vẫn có thể truy xuất đầu ra trước đó bằng cách sử dụng giải pháp trong câu trả lời được chấp nhận - sau đó bạn có thể sử dụng lại bánh xe chuột của mình.
Phil

28

Tất cả các câu trả lời này đề cập đến cách điều hướng trong một phiên màn hình, nhưng có một chức năng tích hợp trong lệnh màn hình để lưu trữ mọi thứ trong một tệp thông qua -Lđối số theo hướng dẫn đọc:

-L bảo màn hình bật ghi nhật ký đầu ra tự động cho các cửa sổ.

để bạn có thể làm:

screen -L -S testscreen

và nó sẽ tạo một tập tin screenlog.#mà ở đó #là một số cho màn hình đó bắt đầu từ 0.

Điều này có rất nhiều lợi thế và những điều quan trọng nhất đối với tôi là:

  1. Giữ hồ sơ về những gì tôi đã làm vì tôi có thể lưu tệp nhật ký trong thư mục dự án để tham khảo trong tương lai.
  2. Bạn có thể theo dõi quá trình và thụ động quá trình:
    • sử dụng tailfđể theo dõi tiến trình trong thời gian thực mà không bị gắn vào màn hình.
    • sử dụng grepđể kiểm tra thuật ngữ nhất định trong nhật ký và tạo thông báo (email, cửa sổ bật lên, voip, v.v.). Điều này có thể được áp dụng trên nhiều màn hình mà bạn không chủ động nhìn vào chúng.

1
Tôi đã không nhận thức được -Lcờ màn hình, điều này rất hữu ích! +1
Kredns

1
chỉ muốn thêm nhiều hơn, screenlog.#được tạo trong cùng một thư mục nơi bạn thực thi screenlệnh
Lê Quang Duy

3

Tôi đã thành công khi phân trang cơ bản bằng cách chuyển nội dung more, ví dụ:

ls -l | more

Hoặc, nếu bạn muốn đầu ra màu cho các trường hợp sử dụng như tô sáng cú pháp, bạn có thể sử dụng

ls -l --color=always | more

Điều này dẫn đến kết quả là tôi có thể dễ dàng trang qua một màn hình tại một thời điểm. Tôi chưa thử sửa đổi @ uther ~/.screenrcnhưng có vẻ như đó là một giải pháp lâu dài khi có sẵn chuột.

Để dùng thử, bạn có thể truy cập trình giả lập BusyBox này và sau đó ...

cd ~/bin
ls -l --color=always | more

Sử dụng phím cách để trang thông qua kết quả của ls -llệnh hoặc sử dụng phím enter để di chuyển qua từng dòng kết quả.

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.