画面内をスクロール、または出力を一時停止


383

作業するサーバーを管理しながら、コマンドラインタスクに画面を使用しています。私は通常小さなコマンド(主にファイルシステムタスク)を実行しますが、時にはより広範なタスク(DBAなど)を実行します。

これらのタスクの出力は私にとって重要です。私はタスクにUbuntuとOS X(両方のターミナルWindows)を使用していますが、画面を使用する必要があるため、スクロールは使用できません。そのため、長い出力(選択から500行のテーブルを考えてください)は私には見えません。マウスホイールは問題外です。

「スクロールは私には見えない」と言うとき、私はこれを意味します:

画面の使用中、Mac OS Xではスクロール中

私は2つのオプションについて考えていました。

  1. 特定のコマンドの出力を一時停止します(paginateを考えてください)。出力が開始されると、何が起こっているかを読み取ってから「Enter」を押すと、表示するものがなくなるまで出力が続行されます。

  2. 画面内をスクロールします。しかし、これが可能かどうかはわかりません。

もちろん、これらのオプションが実際に可能かどうかはわかりません。もしそうなら、どのようにそれらを達成できますか?他の選択肢も好評です。

回答:


526

Screenはターミナルマルチプレクサであり、いくつかのバッファを処理する必要があるため、独自のスクロールバッファがあります。

おそらくもっと良い方法があるかもしれませんが、私は「コピーモード」を使用してスクロールすることに慣れています(これは、貼り付けコマンドも必要ですが、画面自体を使用してテキストをコピーするために使用できます)。

  • 画面のプレフィックスの組み合わせ(デフォルトではC-a/ control+ A)を押してから、を押しますEscape

  • 矢印キー(および)を使用して上下に移動します。

  • 完了したら、qまたはEscapeを押して、スクロールバッファーの最後に戻ります。

(代わりの場合q、またはEscapeあなたがヒットEnterたりReturnして、カーソルを移動し、テキストをコピーするために選択して、打つことでしょうEnterか、Return二度目はそれをコピーします。そして、あなたがして貼り付けることができますC-aが続きます]。)

もちろん、一般的に使用される2つのページャーmoreとをいつでも使用できlessます。これは一部のコマンドには十分かもしれません。


5
また、qを押すと、何もコピーせずにコピーモードが終了します(ボタンを1回押すだけです)。これはviの説明に含まれている可能性がありますが、リンクは現在壊れています。
ナタナエルファーリー14年

3
また、[Esc]を押すと、コピーモードも終了します。
ソパラホデアリエレス

7
ページアップする方法はありますか?
スングクリム

10
スクロールバッファはviのようなコマンドをサポートしているようです:CbとCfでページを上下にスクロールします。
トーコ

3
コピーモードでは、PageUpボタンとPageDownボタンが機能します。最初に押すと1行だけ移動しますが、その後は通常のようにページが移動します。
エリヤ

171

njsgによってscreen指摘されたバッファを使用することは、良い解決策です。画面内のxterm termcap情報で代替テキストバッファーを無効にすることもできます。無効にすると、スクロールバー(およびマウスホイール)を使用して上下にスクロールできます。

これをに追加します~/.screenrc

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

詳細については、こちらをご覧ください


1
Ctrl + Aを入力してスクロールバックの制限を設定し、:、「
scrollback

2
これを使用して、Linuxターミナルの典型的なショートキー(shift + pg up / down home / end)も機能します、ありがとう。
トックランド

5
このヒントだけで...私は、画面を使用して再考作る
魚のモニターに

5
+1受け入れられているソリューションよりもエレガント。
ライアンYoosefi

9
screen開始してからの出力のみを提供します。つまり、他の場所に再接続すると、スクロールして前に何が起こったのかを見ることができなくなります。ただし、受け入れられた回答のソリューションを使用して以前の出力を取得することはできます。その後、マウスホイールを再度使用できます。
フィル

28

これらのすべての回答は、スクリーンセッション内でのナビゲート方法について説明しましたが、画面コマンドには組み込みの機能があり-L、マニュアルに記載されている引数に従ってすべてをファイルに保存します。

-Lは、ウィンドウの自動出力ログをオンにするよう画面に指示します。

あなたができるように:

screen -L -S testscreen

それは小枝ファイルを作成するscreenlog.#場所を#0から始まるその画面の数です。

これには多くの利点があり、私にとって最も重要なものは次のとおりです。

  1. 今後の参照のためにログファイルをプロジェクトフォルダーに保存できるので、私が行ったことの記録を保持します。
  2. プロセスを非アクティブおよびパッシブに監視できます。
    • tailf画面に接続せずにリアルタイムで進行状況を監視するために使用します。
    • grepログ内の特定の用語を確認し、通知(電子メール、ポップアップ、VoIPなど)を生成するために使用します。これは、積極的に見なくても複数の画面に適用できます。

1
私は-Lスクリーンフラグを知りませんでした、これは非常に便利です!+1
クレンズ

1
ちょうどより多くを追加したい、screenlog.#あなたが実行する同じフォルダに生成されたscreenコマンド
LêクアンDuyと

3

moreたとえば、コンテンツをにパイプすることで基本的なページングを取得できました。

ls -l | more

または、構文の強調表示などのユースケースでカラー出力が必要な場合は、次を使用できます。

ls -l --color=always | more

これにより、一度に1つの画面を簡単にページングできる出力が生成されます。@utherの変更を試みたことはありません~/.screenrcが、マウスが利用可能な場合の永続的な解決策として望ましいと思われます。

これを試すには、このBusyBoxエミュレーターに移動してから...

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

スペースバーを使用してls -lコマンドの結果をページ移動するか、Enterキーを使用して結果を1行ずつ移動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.