假设我不知道~/.bashrc
有什么用。是否有一个命令可以告诉我该文件是什么/做什么?除了谷歌搜索答案。手册页有一个文件部分,也许有一种方法可以告诉 man:给我在其手册页 FILES 部分中有此文件的命令的手册页。这样的事情存在吗?
答案1
如果您有包管理器,您可以查询哪个包拥有给定的文件。
在 Arch Linux 上,您可以使用
pacman -Qo FILENAME
在 Ubuntu、Debian 和其他带有 apt 的发行版上,您可以使用
apt-file FILENAME
要搜索 man 文件,您可以使用zgrep
cd /usr/share/man
find -name *.gz | \ # List all *.gz files
while read line; do # For each file:
zgrep bashrc "$line" && # call zgrep with pattern and filename
echo "--- $line ---"; # print filename if zgrep found something (&&)
done #
答案2
谷歌通常是最快的方法。但是,如果要搜索手册页,可以使用以下命令列出 ( -w
) 包含任意位置文本的用户命令(第 1 节)的所有手册页.bashrc
:
man -w -s 1 -K .bashrc
对于像这样的文件.bashrc
,这会以手册页的形式出现一些误报,建议向.bashrc
.该命令用于 man 的 man-db 实现,该命令在 Linux 下很流行。还有其他 man 实现没有全文搜索选项;您可以grep
在找到手册页的位置后使用,例如
grep -F .bashrc /usr/man/man1/*.1
如果你想找到哪个程序访问了该配置文件,你可以设置一个监控系统。您可以使用记录文件系统监视目录树中的所有访问。监视整个主目录可能非常冗长,并且 LoggedFS 只能监视目录树,而不能单独监视常规文件,因此要监视特定文件,请将其移动到自己的目录并创建符号链接。
mkdir ~/monitored
mv ~/.bashrc ~/monitored
ln -s monitored/.bashrc ~
loggedfs -l ~/monitored.log ~/monitored
观察日志文件以查看进程何时访问它。默认情况下,进程名称包含在日志中。
答案3
我推荐@akrafs 答案,但如果不够详细;您可以设置auditd来记录哪个文件访问了配置文件。