我遇到了这个命令
sudo clamscan -v -r /folder/to/scan/ | grep FOUND >> /path/to/save/report/file.txt
在研究 clam(一个开源防病毒引擎)时。我无法理解传递给 grep 的参数 FOUND 的含义。我尝试了 man grep,但它没有提供有关此类参数的信息。
答案1
grep
是一个行匹配工具,与 Windows 中的类似findstr
,但功能更强大。您在示例中看到的是此结构:
command | grep SOMEWORD >> file.txt
基本思想是,我们运行command
它的输出将用于grep
搜索,SOMEWORD
并且结果输出将仅是包含单词的行。因为我们有通过管道从另一个命令输入的FOUND
输入,所以我们不需要双引号,但除此之外,典型的 grep 命令将如下所示:grep
|
grep "USERNAME" /etc/passwd
至于>>
我认为如果我们要生成新报告,这是不必要的,因为>>
会将文本附加到文件,但万一>
文件每次都会被覆盖。我认为这>>
相当于创建所有扫描的日志。
答案2
通常,grep
用于仅显示包含指定关键字的字符串,而不是在终端中显示文件或命令的整个输出。
据我了解,sudo clamscan -v -r /folder/to/scan/ | grep FOUND >> /path/to/save/report/file.txt
将读取 ClamAV 的扫描文件(需要指定),找到其中包含单词“FOUND”的任何行,并将这些行复制到新文件中(您指定)。
它不是一个参数,而是您要求grep
在指定文件中找到的东西。
答案3
“grep FOUND” 将仅从“clamscan”命令的输出中过滤包含单词“FOUND”的行。
它不是 grep 的选项,而是 grep 正在寻找的实际数据。
答案4
sudo clamscan -v -r /folder/to/scan/
将返回结果,并且这些结果被输入(“管道”)到“grep”。
如果结果中有单词“FOUND”,则将其添加到文本文件“/path/to/save/report/file.txt”中。“>>”表示附加到文件。