ターミナルの*出力*履歴?


19

私は自分の端末でコマンド履歴をナビゲートするために関数を広範囲に使用しています。コマンド出力履歴もナビゲートする方法があるのだろうか?(大きなhistsizeを維持し、pgupキーに頼る以外に)

私の特定の状況ではコマンドのソースが変わるため、「コマンドを再実行」することはできません。以前の変更の出力を頻繁に振り返る必要があります。

ハック歓迎。

ありがとう!

2010年の編集:

私は 'tee'にクレジットを与えました。セッションを他の場所でログに記録するすべての方法の中で、最も広く適用されます(つまり、gnu coreutilsの一部であり、特定のシェルまたはユーティリティを必要としません)。それは私が探していたものではありませんでしたが、そのようなものは実際には存在しないことがわかりました。

私が考えることができる最も近い近似は、screen(byobu / tmux)のようなものを使用してファイルにログを記録し、そのログファイルをページ/検索するカスタムコマンドを記述(およびキーバインド)することです(less画面ではなくプロンプトによるページングを考えてください)。みんな、ありがとう。

2012年編集:

@Dustin Kirklandの答えは、少なくとも一般的には明らかに最高です。端末のスクロールバックバッファーは、コマンド出力履歴をナビゲートするための最も邪魔にならない方法です。Byobuは多くのデフォルトの履歴行を保存しているようです(10K; tmuxには2K、GNU画面100)。正規表現検索が可能です(大まかな外観は、GNU画面にはスクロールバック検索がなく、tmuxにはプレーンテキスト検索のみがあることを示します)。

回答:


4

by風の使用について言及してますが...

それは確かにそれを行う一つの方法です。Byobuは、ウィンドウごとまたは分割(ペイン)ごとに10K行のスクロールバック履歴を保存します。

Alt- PageUpAlt- PageDown、またはを押すと、簡単にスクロールバックを入力できますF7。スクロールバックモードになったら、viのようなコマンドを使用して前後に検索できます。/regex前方検索および?regex後方検索に使用します。


スクロールバック履歴はどこに保存されますか?また、セッション間でスクロールバックを維持する方法はありますか?つまり、Byobuでターミナルを開き、いくつかのコマンドを実行し、を呼び出しexit、ターミナルを閉じ、Byobuで新しいターミナルを開き、以前のセッションを保持します。
ダレルホルト


8

を使用scriptして、端末セッションをファイルに記録できます。これを常に実行する場合は、適切なscriptコマンドをに追加します.login

$ man script


5

使用する screen -L

シェルセッション(exitコマンド)を終了した後、開始したディレクトリと同じディレクトリにログファイルを取得しますscreen

次に、moreまたはで出力を表示できますless -R


5

screen ログ出力に設定できます。

それを起動するための一つの方法は、ランニング中にscreenセッション、マスコミにあるCtrl- a、そして:、その後、入力しますlog

からman screen

log [on|off]

Start/stop writing output of the current window to a file "screenlog.n" in the 
window's default directory, where n is the number  of  the  current  window.
This filename can be changed with the `logfile' command. If no parameter is
given, the state of logging is toggled. The session log is appended to the
previous contents of the file if it already  exists.  The current contents and
the contents of the scrollback history are not included in the session log.
Default is `off'.

logfile filename
logfile flush secs

Defines  the  name  the  log files will get. The default is "screenlog.%n". The 
second form changes the number of seconds screen will wait before flushing the
logfile buffer to the file-system. The default value is 10 seconds.

@SQB:答えを広げました。
追って通知があるまで一時停止します。

3

bashは、ユーザーが行った操作の履歴を保持しますが、コマンドの出力は保持しません。それは潜在的に巨大である可能性があり、頻繁に有用ではありません。

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