web-dev-qa-db-ja.com

端末の*出力*履歴?

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

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

ハック歓迎。

ありがとう!

2010年を編集:

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

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

2012年を編集:

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

21
mikewaters

byob ...を使用して言及している.

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

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

4
Dustin Kirkland

tee を使用して、コマンド出力をファイルと端末に同時に送信できます。

11
Carl Norum

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

$ man script

8
Paul R

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

実行中のscreenセッション内で開始する1つの方法は、 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.

screen -Lを使用

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

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

5
wieczorek1990

bashは、実行した履歴を保持しますが、コマンドからの出力は保持しません。巨大になる可能性があり、役に立たないことがよくあります。

3
Jay