実行中のシステムプロセス(例:netstat、syslog、arpなど)のデータを取得するためにbashファイルを実行しています。歴史を除いて、すべてがうまくいった。履歴をテキストファイルとして保存しようとしています。
cp ~/. bash_history $path/filename.txt
残念ながら、これは私に完全な歴史を提供しません。コマンドを手動で入力する場合
history > /media/root/usb/filename
私は全く異なる結果を得ました。私の目標は、1つのbashファイルからプロセス全体を自動化することです。これを行う方法はありますか?そして、記録の日時も知りたいです。
答え1
@Jesse_bが述べたように、.bash_history
現在のセッションを除くすべての以前のシェルセッションを含む履歴は、コマンドで確認できますhistory
。したがって、まず次のように現在の履歴を更新する必要があります。
history -a
その後、別のファイルにコピーできます。
cp ~/.bash_history $path/filename.txt
各履歴項目の前にタイムスタンプを追加するには、$ HISTTIMEFORMAT変数を設定してください。
HISTTIMEFORMAT="%F %T: "
答え2
履歴の日付と時刻を取得するには、次のコマンドを実行します。
HISTTIMEFORMAT="%d/%m/%y %T "
echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc
history
これが私に完全な記録を提供しないのはなぜですか?
回答を見る@マイケルホーマー
常にすぐに書き込むようにするには、PROMPT_COMMAND変数にコマンドを配置できます。
export PROMPT_COMMAND='history -a'