Gulir ke dalam Layar, atau Jeda Output

383

Saya menggunakan layar untuk tugas baris perintah saya sambil mengelola server tempat saya bekerja. Saya biasanya menjalankan perintah kecil (kebanyakan tugas sistem file) tetapi kadang-kadang saya menjalankan tugas yang lebih luas (seperti DBA).

The Output dari tugas-tugas penting bagi saya. Karena saya menggunakan Ubuntu dan OS X (keduanya Terminal Windows) untuk tugas-tugas saya, namun saya perlu menggunakan layar, gulir tidak tersedia, sehingga output yang panjang (bayangkan tabel 500-baris dari pilihan) tidak terlihat bagi saya. Roda mouse keluar dari pertanyaan.

Ketika saya mengatakan "gulir tidak terlihat bagi saya, maksud saya ini:

Atas saat menggunakan layar, di Mac OS X, saat menggulir

Saya sedang memikirkan dua opsi:

  1. Jeda (pikirkan paginasi ) output dari perintah tertentu. Ketika output dimulai, itu akan membiarkan saya membaca apa yang terjadi, kemudian saya menekan "Enter", kemudian output berlanjut sampai tidak ada lagi yang ditampilkan.

  2. Gulir ke dalam layar. Tetapi saya tidak tahu apakah ini mungkin.

Tentu saja, saya tidak tahu apakah opsi itu benar-benar mungkin . Jika ya, bagaimana bisa mencapainya? Alternatif lain akan diterima dengan baik.

AeroCross
sumber

Jawaban:

526

Layar memiliki buffer gulir sendiri, karena merupakan terminal multiplexer dan harus berurusan dengan beberapa buffer.

Mungkin ada cara yang lebih baik, tetapi saya terbiasa menggulir menggunakan "mode salin" (yang dapat Anda gunakan untuk menyalin teks menggunakan layar itu sendiri, meskipun itu memerlukan perintah tempel juga):

  • Tekan kombinasi awalan layar Anda ( C-a/ control+ Asecara default), lalu tekan Escape.

  • Bergerak naik / turun dengan tombol panah ( dan ).

  • Setelah selesai, tekan qatau Escapeuntuk kembali ke ujung buffer gulir.

(Jika alih-alih qatau EscapeAnda menekan Enteratau Returndan kemudian memindahkan kursor, Anda akan memilih teks untuk disalin, dan memukul Enteratau Returnkedua kalinya akan menyalinnya. Kemudian Anda dapat menempel dengan C-adiikuti oleh ].)

Tentu saja, Anda selalu dapat menggunakan moredan less, dua pager yang umum digunakan, yang mungkin cukup untuk beberapa perintah.

njsg
sumber
5
Juga, menekan q berhenti dari mode salin tanpa menyalin apa pun (dan itu satu tombol kurang tekan). Ini mungkin dalam penjelasan vi tetapi tautannya sekarang terputus.
Nathanael Farley
3
Juga menekan [Esc] juga keluar dari mode salin.
Sopalajo de Arrierez
7
cara apa saja untuk naik-turun?
Sungguk Lim
10
Gulir buffer tampaknya mendukung perintah vi-like: Cb dan Cf untuk menggulir halaman ke atas / bawah.
Touko
3
Dalam mode salin tombol PageUp dan PageDown saya berfungsi. Tekan pertama hanya bergerak satu baris tetapi setelah itu halaman seperti biasa.
Elia
171

Menggunakan screenbuffer seperti yang ditunjukkan oleh njsg adalah solusi yang bagus. Anda juga dapat menonaktifkan buffer teks alternatif di info termcap xterm di dalam layar. Saat dinonaktifkan, Anda dapat menggunakan bilah gulir (dan roda mouse) untuk menggulir ke atas dan ke bawah.

Tambahkan ini ke ~/.screenrc.

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

Anda dapat membaca lebih banyak diskusi di sini .

George M
sumber
1
atur batas scrollback dengan mengetik Ctrl + A,:, ketik "scrollback 10000" atau nilai numerik apa pun yang Anda inginkan
lobi
2
Dengan menggunakan ini, tombol pintas khas terminal Linux (shift + pg atas / bawah home / end) juga berfungsi, terima kasih.
tokland
5
Tip ini sendiri membuat saya mempertimbangkan kembali menggunakan layar ...
Fish Monitor
5
+1 Lebih elegan daripada solusi yang diterima.
Ryan Yoosefi
9
hanya memberi Anda hasil yang screenAnda berikan sejak Anda memulainya - yaitu, memasang kembali di tempat lain berarti Anda tidak dapat menggulir ke atas dan melihat apa yang terjadi sebelumnya. tetapi Anda masih dapat mengambil output sebelumnya menggunakan solusi dalam jawaban yang diterima - maka Anda dapat menggunakan roda mouse Anda lagi.
Phil
28

Semua jawaban ini membahas cara menavigasi dalam sesi layar, tetapi ada fungsi built-in dalam perintah layar untuk menyimpan segala sesuatu dalam file melalui -Largumen sesuai dengan manual yang berbunyi:

-L memberitahu layar untuk mengaktifkan log keluaran otomatis untuk windows.

jadi kamu bisa melakukan:

screen -L -S testscreen

dan itu akan membuat file di screenlog.#mana #nomor untuk layar itu mulai dari 0.

Ini memiliki banyak keuntungan dan yang paling penting bagi saya adalah:

  1. Menyimpan catatan tentang apa yang telah saya lakukan sejak saya dapat menyimpan file log di folder proyek untuk referensi di masa mendatang.
  2. Anda dapat secara tidak aktif dan pasif memantau proses:
    • gunakan tailfuntuk memantau kemajuan secara realtime tanpa terpasang ke layar.
    • gunakan grepuntuk memeriksa istilah tertentu dalam log dan menghasilkan pemberitahuan (email, popup, voip, dll.). Ini dapat diterapkan pada beberapa layar tanpa Anda melihatnya secara aktif.
Mehrad Mahmoudian
sumber
1
Saya tidak mengetahui -Lbendera layar, ini sangat berguna! +1
Kredns
1
hanya ingin menambahkan lebih banyak, screenlog.#dihasilkan di folder yang sama di mana Anda menjalankan screenperintah
Lê Quang Duy
3

Saya telah berhasil mendapatkan paging dasar dengan memiparkan konten more, misalnya:

ls -l | more

Atau, jika Anda ingin keluaran warna untuk kasus penggunaan seperti penyorotan sintaks, Anda dapat menggunakan

ls -l --color=always | more

Ini menghasilkan keluaran yang saya dapat dengan mudah halaman melalui satu layar pada suatu waktu. Saya belum mencoba modifikasi @ uther ~/.screenrctapi itu tampaknya lebih disukai sebagai solusi yang langgeng ketika mouse tersedia.

Untuk mencoba ini, Anda dapat pergi ke emulator BusyBox ini dan kemudian ...

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

Gunakan bilah spasi untuk menelusuri hasil ls -lperintah atau gunakan tombol enter untuk menelusuri hasil baris demi baris.

Michael Hogan
sumber