web-dev-qa-db-ja.com

bashの履歴をすべて表示するにはどうすればよいですか?

まず、以下の例を示します。

Shell(1)で次のコマンドを実行しました。

$ ping google.com
PING google.com (74.125.235.164) 56(84) bytes of data.
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=1 ttl=54 time=2.85 ms
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=2 ttl=54 time=3.42 ms

その後、別のShell(2)を開いて履歴を確認します。

$ history
 .
 .
 .
 8720  exit
 8721  clear
 8722  history

この場合、シェルはShell(1)によって実行された履歴を表示できませんが、すべてのシェルのすべてのbash履歴を表示したいです。

だから私の質問は、どのようにしてbashの履歴をすべて見ることができますか?誰かがハッキングする方法を知っていますか?

事前にどうもありがとうございました!

19
gipcompany

histappend Shellオプションと-aフラグをhistoryに:

histappend

設定されている場合、履歴リストは、ファイルを上書きするのではなく、シェルの終了時にHISTFILE変数の値で指定されたファイルに追加されます。

history

-a「新しい」履歴行(現在のbashセッションの開始以降に入力された履歴行)を履歴ファイルに追加します。

history -aPrompt_COMMAND、常に最新の.bash_historyファイル。

15
Carl Norum
cat ~/.bash_history

私もただ使用する傾向がありますが、動作します

vim ~/.bash_history 

そして、/検索する

23
etusm

これを試して:

.bashrcを編集して、これを末尾に追加します。

shopt -s histappend
Prompt_COMMAND="history -n; history -a"
unset HISTFILESIZE
HISTSIZE=2000

ソース: http://subbass.blogspot.com.br/2009/10/howto-sync-bash-history-between.html

5
jfelipesp

Advanced Shell Historyのようなものをインストールできます。これは、各コマンドをsqlite3データベースに記録します。コマンドラインからデータベースを照会するためのツールが付属しています。 https://github.com/barabo/advanced-Shell-history

この設定により、すべてのセッションのコマンド履歴が統一されたビューになります。また、現在の作業ディレクトリ(またはサブツリー)のコマンド履歴、コマンド終了コード、コマンド期間なども取得できます。

完全な開示:ツールを作成および保守しました。

2
carl.anderson

いくつか指摘したように、shopt -s histappendを使用する必要があります。 shoptを実行し、histappendが 'on'であることを確認して確認してください。

各コマンド(複数の同時シェル全体)が各シェルの履歴に表示されるようにするには、.bashrcファイルの最後にこれを追加します。

# Skip if not an interactive Shell
if [ -z "${PS1}" ]; then return; fi
export Prompt_COMMAND="history -a; history -c, history -r; ${Prompt_COMMAND}

-a:新しい履歴行(現在のBashセッションの開始以降に入力された履歴行)を履歴に追加しますfile

-c:履歴をクリアしますリスト

-r:現在の履歴fileを読み取り、その内容を履歴listに追加します。

source .bashrcを実行するか、新しいセッションを作成し、いくつかのターミナルウィンドウでそれぞれにコメント#Tnを入力します。次に、1つの端末でhistory | tail -Nと入力して、最後のN行を表示します。さまざまな端末で入力されたすべてのコメントが表示されます。

履歴の各行のタイムスタンプを取得するには、次を/etc/profile.d/bashrc.shに追加すると役立つ場合があります。

if [ -z "${PS1}" ]; then return; fi
export HISTTIMEFORMAT='%F %T '

結果は次のようになります。

 [moi@laBoheme ~]$ history | tail -4
 3292  2019-01-22 12:41:27  # T1
 3293  2019-01-22 12:41:34  # T2
 3294  2019-01-22 12:41:42  # T3
 3295  2019-01-22 12:41:50  history | tail -4
1
DeanM