一次性复制所有用户的 .bash_history

一次性复制所有用户的 .bash_history

是否可以使用 cp 将每个用户的 .bash_history 文件复制到同一个文件夹中(附加用户名)?

或者至少可以将它们复制到一组并行文件夹中吗?我似乎无法弄清楚。

我确实有 root 访问权限。

答案1

总结; for a in /home/* ; do cp $a/.bash_history /tmp/$a.bash_history ; done

较长的版本:

for a in pattern 循环遍历模式中的所有项目。
模式本身存储在名为A

例如:
for a in * ; do echo $a ; doneecho 所有文件名。echo
for a in /home/* ; do echo $a ; done/home 中所有主目录的名称。

代替回声我们使用复制命令。(cp)

由于我们不想覆盖所有文件,所以我们要么需要更改目标名称,要么需要将它们全部连接在一个文件中。

.bash_history

要复制我们使用cp $a /tmp/$a_file(现在所有文件的名称都不同了。

为了连接,我们可以使用 cat 和 append 进行重定向。
for a in /home/* ; do cat $a/.bash_history >> /tmp/all-users_bash_history ; done

答案2

请记住,这不是复制用户活动的万无一失的方法。这是因为用户可以轻松调用某些选项来不将内容放入历史文件中。因此,我不会将其视为任何类型的审计机制。

此外,作为 root 用户,除非有具体且有效的理由,否则监视其他用户的文件是有点可疑的。这里缺乏一点诚信,除非你事先告诉他们你要这么做。

答案3

如果你正在寻找某些特定的东西,你可以使用:

grep -e "stuff goes here" /home/*/.bash_history

来源

相关内容