Ubuntuの複数のターミナルセッションからBashの履歴を確認するにはどうすればよいですか?[重複]


11

重複の可能性:
履歴ファイルをbashで統合できますか?

Ubuntu Server 9.10を使用していますが、複数のターミナルセッションのbash履歴を確認したいと思います。つまり、途中でログアウトした場合でも、最後の200コマンド程度です。

私が使用するときhistory、実際のターミナルセッションからのすべてのコマンドを表示します。Bashからより多くのコマンド履歴を表示するにはどうすればよいですか?Ubuntuのデフォルト値から変更する必要があるbashの特定の設定はありますか?

~/.bash_historyファイルがありません。しかし、私は持っている~/.bashrcHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsし、HISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

更新: VirtualBoxでUbuntu Server 10.10を試しています。shutdownコマンドを使用せずにVirtualBoxをオフにすると、次回の起動時に、最後のセッションのコマンドが履歴ファイルに保存されません。

コマンドは、shutdownコマンドでマシンをシャットダウンした場合にのみ保存されます。たとえば、shutdown -P 0。

これが私の問題の原因であるに違いありません。したがって、コマンド履歴をより頻繁に保存する方法を理解する必要があります。たとえば、各コマンドの後。


あなたがしなければ、あなたは何を得るのですかecho $HISTSIZEecho $HISTFILESIZE?私(Ubuntu)~/.bashrcHISTCONTROLあなたと同じ行を持っています。これは、2番目の行が最初の行をオーバーライドし、値がコンマ区切りではなく、コロン区切りであるためです。実行するset -oと、「履歴がオン」という行が表示されますか?
追って通知があるまで一時停止。

私は両方の変数について500echohistory on
Jonas

2番目のHISTCONTROLステートメントは最初のステートメントではなく、取得するステートメントです。ただし、ignorebothは、ignoredups + ignorespaceの bash省略形なので、おそらく問題ではありません。
quack quixote、2010年


1
@warren:素敵な発見。私は同意します、まさにサノジが求めているもののように見えます。
quack quixote

回答:


6

使用できます

history -a

メモリ内履歴を履歴ファイルにすぐに追加します。これが実行されるか、または他のセッションが終了しない限り、1つのターミナルセッションは別のセッションを認識できません。

使用できます

history 200 | less

そのエントリ数を確認します。

さらにHISTSIZE、Bashのmanページのに関するエントリを参照してくださいHISTFILESIZE


history -a´ doesn't do anything for me, and not 歴史200 | less`もどちらかですが、詳細を記載して質問を更新しました。とにかくありがとう。
ジョナス

私は今、理由を見つけたと思います。完全にシャットダウンしない限り、履歴は保存されません。私の新しい質問を参照してください:unix.stackexchange.com/questions/3330/...
ジョナス

6

ログアウトすると、履歴がファイルに追加されます~/.bash_history。そちらをご覧ください。

デフォルトでは、最後の500コマンドを記憶します。さらに保存する場合は、変数をHISTSIZEに設定します~/.bashrc

またignoredupsHISTCONTROL(を使用してHISTCONTROL=$HISTCONTROL:ignoredup)追加します。これにより、重複する連続したコマンドが1回だけ保存されます。

man 1 bash歴史について他に調整できることを見てください。


お返事をありがとうございます。しかし、私は持っていません~/bash_historyファイルを、そして何HISTSIZE~/.bashrc私が持っているHISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsHISTCONTROL=ignorebothし、そのことならばそれは、Ubuntuのサーバです。
ジョナス

1
@Snojに注意し.てください~/.bash_history。そして、HISTSIZEそれはちょうど500エントリのデフォルト値を使用します。
ベンジャミンバニエ

はい。ただし~/.bash_history、システムにファイルがありません。以前ls -aチェックしてた。
ジョナス

@Sanojだから多分それはデフォルトではありません。ファイル名は$HISTFILE変数に格納されるので、echo $HISTFILEどこを見るかがわかります。
Benjamin Bannier

echo $HISTFILE私を与える/home/sanoj/.bash_history-奇妙な。おそらくそれはセキュリティ上の理由でアクティブ化されていませんか?
Jonas

1

bashの履歴は通常、シェルの実行が開始されるとロードされ、正常に終了すると保存されます。とを使用history -ahistory -nてこれをオーバーライドできますが、悪用しない限り、自動的にオーバーライドすることはできません$PROMPT_COMMAND


0

Sanoj、これは本当に「うまくいく」はずです。これを可能にするためにあなたがする必要がある特別な何かがあるはずではないと私は思います。何かが通常のイベントの進行を妨げているようです。

/ etc / profile、/ etc / bashrc(またはいくつかのソースによると/etc/bash.bashrc)、~/.bash_profile、~/.bashrc、~/.bash_login、~/.bash_logoutを調べて、履歴に影響している可能性があるものがある場合(おそらくgrep -i hist上記の各ファイルに)。

...特に、ファイルを削除する何かが〜/ .bash_logoutにあるかどうか疑問に思います。

または、何かが$HOME変数をオーバーライドしている可能性はありますか?

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