![一次性复制所有用户的 .bash_history](https://linux22.com/image/1358097/%E4%B8%80%E6%AC%A1%E6%80%A7%E5%A4%8D%E5%88%B6%E6%89%80%E6%9C%89%E7%94%A8%E6%88%B7%E7%9A%84%20.bash_history.png)
是否可以使用 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 ; done
echo 所有文件名。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 用户,除非有具体且有效的理由,否则监视其他用户的文件是有点可疑的。这里缺乏一点诚信,除非你事先告诉他们你要这么做。