私のBASHシェルでカスタムアクティビティログを生成する方法はありますか?各行には、最後のコマンド、実行時間、実行された作業ディレクトリが格納されます。
注:を使用する必要はありませんが、exec
シェルへのrootアクセス権がないため、人々が使用できると仮定する量を制限することがアイデアです。良い解決策のように感じるので、実行することをお勧めします。
答え1
PROMPT_COMMAND
これは、次の方法またはさまざまな他の方法で達成できます。
export PROMPT_COMMAND='echo -e $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//")\\t$(date)\\t$(pwd) >> $HOME/history.csv'
ファイルは、カスタムフィールド区切り文字()を使用してCSVファイルとして開くことができますTAB。この文字は、組み込みコマンド「バックスラッシュエスケープ解析の有効化」に切り替えて-e
生成されます。echo
$(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//")
:Linuxでは、コマンド番号とコマンド番号の周りにスペースがない最後のコマンドを取得します。$(date)
:現在の日時を取得します。$(pwd)
:現在の作業ディレクトリを取得します。>> $HOME/history.csv
:>>
ファイルに()出力を追加します。
(of)で実行すると、ls -la
次の行に従って出力が生成されます。$HOME
username
ls -la Tue May 14 12:00:36 EDT 2019 /home/username