Ekranın içinde kaydırın veya Çıktıyı Duraklatın


383

Çalıştığım sunucuları yönetirken komut satırı görevlerim için ekranı kullanıyorum . Genelde küçük komutları çalıştırırım (çoğunlukla dosya sistemi görevleri) ancak bazen daha kapsamlı görevleri (DBA gibi) çalıştırıyorum.

Bu görevlerin çıktısı benim için önemlidir. Görevlerim için Ubuntu ve OS X (her ikisi de Terminal Windows) kullandığımdan ekran kullanmam gerekiyor, kaydırma yapılamıyor, bu nedenle herhangi uzun bir çıktı (seçimden 500 satırlık bir tablo düşünün) benim için görünmez. Fare tekerleği söz konusu değil.

"Kaydırma benim için görünmez değil dediğimde şunu demek istiyorum:

ekran kullanırken, kaydırma sırasında Mac OS X'te

İki seçenek hakkında düşünüyordum:

  1. Belirli bir komutun çıktısını duraklatın ( paginate düşünün ). Çıktı başladığında, olanları okumama izin verecek, daha sonra "Enter" a basacağım, sonra gösterilecek başka bir şey olmayana kadar çıktı devam edecek.

  2. Ekran içinde kaydırın. Ama bunun mümkün olup olmadığını bilmiyorum.

Tabii ki, bu seçeneklerin gerçekten mümkün olup olmadığını bilmiyorum . Eğer öyleyse, onları nasıl başarabilirim? Diğer alternatifler iyi karşılanacaktır.

Yanıtlar:


526

Ekran bir terminal çoklayıcı olduğundan ve çeşitli tamponlarla uğraşmak zorunda olduğundan, kendi kaydırma tampon belleğine sahiptir .

Belki daha iyi bir yol vardır, ancak "kopya modunu" kullanarak kaydırmaya alışkınım (bu işlemi ekranın kendisini kullanarak metni kopyalamak için kullanabilirsiniz, ancak bu da yapıştırma komutunu gerektirir):

  • Ekran önek kombinasyonunuza basın ( varsayılan olarak C-a/ control+ A), ardından düğmesine basın Escape.

  • Ok tuşlarıyla ( ve ) yukarı / aşağı hareket edin .

  • İşiniz bittiğinde, kaydırma tamponunun sonuna geri dönmek için qveya Escapetuşuna basın.

(Eğer yerine qya Escapesen vurmak Enterya Return, metin kopyalamak için seçme ve isabet olacaktır ve daha sonra imleci Enterveya Returnikinci kez kopyalar. Sonra birlikte yapıştırabilirsiniz C-aizledi ].)

Elbette, her zaman moreve lessbazı komutlar için yeterli olabilecek sık kullanılan iki çağrı cihazını kullanabilirsiniz .


5
Ayrıca, q düğmesine basılması hiçbir şeyi kopyalamadan kopyalama modundan çıkar (ve bir daha az düğmeye basar). Bu vi açıklamasında olabilir, ancak bağlantı koptu.
Nathanael Farley

3
Ayrıca [Esc] düğmesine basmak da kopya modundan çıkar.
Sopalajo de Arrierez

7
sayfa yukarı herhangi bir şekilde?
Sungguk Lim

10
Scroll buffer, vi benzeri komutları destekliyor gibi görünüyor: Sayfayı yukarı / aşağı kaydırmak için Cb ve Cf.
Touko

3
Kopya modunda PageUp ve PageDown düğmelerim çalışıyor. İlk basış yalnızca bir satır taşınır ancak ondan sonra normal gibi görünür.
Elijah,

171

Kullanma screenbelirttiği gibi tampon njsg ile iyi bir çözümdür. Alternatif metin arabelleğini, ekran içindeki xterm termcap bilgisinde de devre dışı bırakabilirsiniz. Devre dışı bırakıldığında yukarı ve aşağı kaydırmak için kaydırma çubuklarını (ve fare tekerleğini) kullanabilirsiniz.

Bunu da ekle ~/.screenrc.

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

Burada daha fazla tartışma okuyabilirsiniz .


1
Ctrl + A,: yazarak scrollback limitini ayarlayın, "scrollback 10000" veya istediğiniz sayısal değeri yazın
lobi

2
Bunu kullanarak, Linux terminallerinin tipik kısayolları (shift + pg up / down home / end) da çalışır.
tokland

5
Bu ipucu, tek başıma ekranı kullanmayı yeniden düşünmemi sağlıyor ...
Fish Monitor

5
+1 Kabul edilen çözümden daha zarif.
Ryan Yoosefi

9
yalnızca screenbaşladığınızdan bu yana size verilen çıktıyı verir - yani, başka bir yere yeniden girmek, yukarı kayar ve daha önce ne olduğunu göremezsiniz. ancak kabul edilen cevaptaki çözümü kullanarak daha önceki çıktıları almaya devam edebilirsiniz - daha sonra fare tekerleğini tekrar kullanabilirsiniz.
Phil

28

Tüm bu cevaplar bir ekran oturumu içinde nasıl gezinileceğini ele aldı, ancak ekran komutunda her şeyi bir dosyada saklamak -Liçin aşağıdakileri okuyan kılavuza göre argüman yoluyla saklamak için yerleşik bir işlevsellik var :

-L, pencereler için otomatik çıkış günlüğünü açmasını söyler.

Böylece yapabilirsin:

screen -L -S testscreen

ve 0'dan başlayarak o ekranın sayısının screenlog.#nerede olduğu ile bir dosya oluşturacaktır #.

Bunun birçok avantajı var ve benim için en önemlileri:

  1. Günlük dosyasını ileride başvurmak üzere proje klasörüne kaydedebildiğim için yaptığımın kaydını tutmak.
  2. İşlemi inaktif ve pasif olarak izleyebilirsiniz:
    • tailfEkrana eklenmeden ilerlemeyi gerçek zamanlı olarak izlemek için kullanın .
    • Kayıttaki grepbelirli bir terimi kontrol etmek ve bildirimler (e-posta, açılır pencere, voip, vb.) üretmek için kullanın . Bu, aktif olarak bakmadan birden çok ekrana uygulanabilir.

1
-LEkran bayrağının farkında değildim , bu çok faydalı! +1
Kredns

1
sadece daha fazlasını eklemek istiyorum screenlog.#, aynı screenkomutu çalıştırdığınız klasörde oluşturulur
Lê Quang Duy

3

moreÖrneğin, içeriğe yönlendirme yaparak temel sayfalama alma konusunda başarılı oldum , örneğin:

ls -l | more

Veya, sözdizimi vurgulama gibi durumlar için renkli çıktılar istiyorsanız,

ls -l --color=always | more

Bu, bir kerede bir ekrandan kolayca sayfa alabileceğim sonucunu veriyor. @ 'Nin modifikasyonunu denemedim, ~/.screenrcancak farenin mevcut olduğu durumlarda kalıcı bir çözüm olarak tercih ediliyor gibi görünüyor.

Bunu denemek için, bu BusyBox öykünücüsüne gidebilir ve sonra ...

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

ls -lKomutun sonuçları arasında gezinmek için boşluk çubuğunu kullanın veya sonuçları satır satır ilerletmek için enter tuşunu kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.