getent
を使用 ホーム ディレクトリを列挙します。
getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -s -H -e "$pattern"
ホーム ディレクトリがよく知られている場所にある場合、
grep -e "$pattern" /home/*/.bash_history
もちろん、ユーザーが別のシェルまたは別の値の HISTFILE
を使用している場合は、 、これではあまりわかりません。また、これは、シェルを介して実行されなかったコマンド、またはエイリアスと関数、およびユーザーの $PATH
の早い段階でユーザーディレクトリにあった現在削除された外部コマンドについても通知しません。 .ユーザーが実行したコマンドを知りたい場合は、プロセス アカウンティングまたはより洗練された監査システムが必要です。コンピューターでのアクティビティの監視を参照してください。プロセスが終了した後、プロセスが実行された時間を確認する方法は?
find /home -name .bash_history | xargs grep <string>
または:
grep string $(find /home -name .bash_history)
これは、デフォルトの場所にあるホーム ディレクトリを対象とすることに注意してください。 /etc/passwd
を解析した方が良いでしょう または getent
を呼び出す 、その出力を解析します。
for i in $(getent passwd | cut -d: -f6 ); do grep string ${i}/.bash_history; done
できます
find /home | grep bash_history | xargs grep "whatever"
しかし、私はそれがあなたが考えていたよりもはるかに良いとは思いません.