Cara menggulir ke atas di jendela terminal saat input baru dihasilkan tanpa harus dilempar kembali ke bawah (Linux)

37

Di Ubuntu, saya ingin menggulir ke atas ketika sebuah perintah sedang berjalan di jendela terminal saya dan menghasilkan keluaran baru (sebenarnya perintah yang berjalan adalah rspec). Saya dapat menggulir ke atas, tetapi setiap kali rspec menghasilkan baris baru keluaran konsol, ia melemparkan saya kembali ke bawah. Apakah ada cara untuk menggulir semuanya? Saya menggunakan terminator di Linux Mint / Ubuntu 12.04 LTS

MEMPERBARUI

Saya menemukan kemungkinan penyelesaian beranda Terminator mengatakan dengan

stty ixon

Anda dapat menghidupkan "XON / XOFF flow control untuk output terminal. Mampu menghentikan sementara output dengan mengetikkan ^ S dan melanjutkannya dengan mengetikkan ^ Q [...]"

Ini tidak sepenuhnya apa yang saya inginkan, tanpa harus menjeda output (dan mungkin bertanya-tanya ketika lupa menyalakannya lagi), saya pikir mungkin ada kunci pengubah sederhana seperti shft-alt dengan roda mouse scroll-up .. Apa saja solusi yang lebih baik?

Yo Ludke
sumber
Itu satu hal yang sangat saya sukai tentang LXTerminal (LXDE).
Matthew Lundberg
Apakah Anda menggulir dengan Shift-PgUp atau dengan scrollbar?
ott--
@ MatthewLundberg Biasanya dengan roda gulir mouse, jadi scrollbar. Tapi itu juga tidak bekerja dengan shift-pgup :( Bisakah saya memiliki terminator juga dalam terminator, Anda tahu?
Yo Ludke
1
xfce4-terminalmemiliki opsi bernama Scroll on output yang dapat Anda hapus centang dan lakukan apa yang Anda minta.
Martín Canaval
1
Sebagai solusinya, Anda bisa mengirim output ke file, buka terminal lain dan tail -f file.txtmelihatnya saat dihasilkan. Itu akan membuat terminal 1 Anda bebas untuk menggulir ke belakang dan masih membiarkan Anda menonton output secara realtime. Tidak elegan aku tahu.
terdon

Jawaban:

53

Meskipun saya agak terlambat, saya memposting ini di sini sehingga siapa pun yang datang ke sini mendapatkan solusi. Bagi saya, solusi untuk masalah yang sama adalah:

Preferensi Terminator -> Tab Profil -> Menggulir tab [sub] -> Hapus centang opsi 'Gulir pada output'.

Hal yang baik tentang opsi ini, adalah bahwa ia masih akan bergulir pada output ketika Anda berada di bagian paling bawah dari output, tetapi segera setelah Anda menggulir ke atas, itu akan berhenti dan tidak akan mengganggu Anda bahkan jika konten output masih sedang dihasilkan.

saya harap ini membantu

Chikitulfo
sumber
keren :) Apakah mungkin untuk membuat jalan pintas untuk mengaktifkan opsi ini?
Yo Ludke
1
Saya telah mencari sedikit, tetapi belum menemukan cara untuk beralih dengan pintasan dalam terminator. Namun, karena opsi ini ditulis dalam file konfigurasi terminator di "$ HOME / .config / terminator / config", seharusnya dimungkinkan untuk menetapkan pintasan global ke sebuah perintah yang mengaktifkan dan menonaktifkan opsi secara langsung dalam file konfigurasi.
Chikitulfo
4
Tetap saja, membuat perubahan pada file konfigurasi tidak akan memengaruhi instance terminator yang sudah berjalan, melainkan hanya akan memengaruhi instance terminator baru yang diluncurkan setelah pengeditan. Jadi jika Anda ingin mengaktifkannya pada terminator yang sedang berjalan, Anda harus melakukannya secara manual, afaik. Dalam kasus apa pun, dengan opsi beralih ke false, segera setelah Anda gulir ke bawah ke baris terakhir, itu terus otomatis menggulir pada output. Ini hanya akan berhenti secara otomatis jika Anda menggulir ke atas secara manual. Jadi saya tidak melihat ada kebutuhan nyata untuk menghidupkan dan mematikan opsi.
Chikitulfo
1

tail -f log.txt | lessakan memperbarui untuk maju ke informasi baru, dan Anda kemudian dapat naik atau turun. Anda juga dapat menggunakan lessfitur pencarian dan sebagainya. Dengan metode pipa, Anda juga dapat mem-parsing output yang bergerak.

Dan ide yang sama, tetapi tanpa pipa: less +F log.txt.
(Ini mengasumsikan Anda dapat bekerja dengan konten Anda dengan cara ini.)

Cara Unix yang lama adalah dengan menekan Ctrl-S di terminal Anda untuk berhenti, dan Ctrl-Q untuk memulai kembali gulir keluaran - ini pada dasarnya adalah apa yang memungkinkan Anda menggunakan terminator stty ixon.
Dengan bilah gulir yang ditambahkan, ini sepertinya cukup baik bagi saya - tekan Control-S, gulir ke atas sesuka Anda, dan kemudian Control-Q untuk turun kembali. Ya, Anda kadang-kadang akan lupa untuk menghentikan sementara output.

Karena saya sangat malas, dan karena saya suka fleksibilitas redirection output, saya akan menggunakan tail -f dengan pipa (dengan asumsi yang sesuai dengan case). Lalu saya bisa menghentikannya, panah-atas dan menambahkan sesuatu seperti grep, dan itu masih berjalan: tail -f tac_plus.log | less | egrep 'peerip'

Lemparkan beberapa catdan teedi sana dan Anda memiliki pesta yang nyata.

belacqua
sumber
Saya ingin menggunakan ini untuk rspec's spec - Masalahnya adalah, dengan ekor / kurang pendekatan, warna hilang (output hitam dan putih, bukan hijau / merah jika saya menjalankan perintah langsung)
Yo Ludke
@YoLudke Saya tidak terbiasa dengan rspec atau bagaimana cara pewarnaannya. Ada cara untuk melewatkan warna melalui grep, dll., Tetapi itu mungkin tidak berfungsi di sini. Apakah Anda melakukan sesuatu seperti menjalankan rspec menunjuk ke proses persisten / looping / berjalan lama, dan mendapatkan output Anda dari itu?
belacqua