Použijte getent
pro výčet domovských adresářů.
getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -s -H -e "$pattern"
Pokud jsou vaše domovské adresáře na dobře známém místě, může to být tak jednoduché jako
grep -e "$pattern" /home/*/.bash_history
Samozřejmě, pokud uživatel používá jiný shell nebo jinou hodnotu HISTFILE
, to ti moc neřekne. Ani to vám neřekne o příkazech, které nebyly provedeny prostřednictvím shellu, nebo o aliasech a funkcích a nyní odstraněných externích příkazech, které byly v některém uživatelském adresáři na začátku uživatelského $PATH
. Pokud chcete vědět, jaké příkazy uživatelé spustili, potřebujete účtování procesů nebo nějaký lepší systém auditu; viz Sledování aktivity na mém počítači., Jak zkontrolovat, jak dlouho proces běžel po dokončení?.
find /home -name .bash_history | xargs grep <string>
Případně:
grep string $(find /home -name .bash_history)
Všimněte si, že to pokrývá domovské adresáře ve výchozích umístěních. Bylo by lepší analyzovat /etc/passwd
nebo vyvolejte getent
a analyzujte jeho výstup.
for i in $(getent passwd | cut -d: -f6 ); do grep string ${i}/.bash_history; done
Můžete to udělat
find /home | grep bash_history | xargs grep "whatever"
Ale ve skutečnosti si nemyslím, že je to mnohem lepší než to, co jste si mysleli.