什么';grep-r和-r的区别是什么

什么';grep-r和-r的区别是什么,grep,Grep,在手册页中: -r 按照符号顺序递归读取每个目录下的所有文件 仅当链接位于命令行上时才链接 “在命令行上”到底意味着什么 谢谢。如果您也检查了man grep: $ grep -r Ping /test/dir/* #does NOT follow the symlink to ../a a:Ping info $ grep -R Ping /test/dir/* #DOES follow the symlink to ../a a:Ping info dir/b:Ping i

在手册页中:

-r

按照符号顺序递归读取每个目录下的所有文件 仅当链接位于命令行上时才链接

“在命令行上”到底意味着什么


谢谢。

如果您也检查了
man grep

$ grep -r Ping /test/dir/*     #does NOT follow the symlink to ../a
a:Ping info

$ grep -R Ping /test/dir/*     #DOES follow the symlink to ../a
a:Ping info
dir/b:Ping info
-r,--recursive

按照符号顺序递归读取每个目录下的所有文件 仅当链接位于命令行上时才链接。这相当于 -d递归选项

-R,--dereference recursive

递归读取每个目录下的所有文件全部跟随 符号链接,与-r不同。

请参见一个示例:

我们在
/test
中创建一个包含以下内容的文件

$ cat /test/a
Ping info
Hello
然后我创建了一个符号链接:

$ ln -s /test/a /test/dir/b
所以它看起来像:

$ ls -l /test/dir
b -> ../a
现在我们
grep

$ grep -r Ping /test/dir/*     #does NOT follow the symlink to ../a
a:Ping info

$ grep -R Ping /test/dir/*     #DOES follow the symlink to ../a
a:Ping info
dir/b:Ping info
“在命令行上”是指传递给grep的参数。如果你给一个符号链接作为
grep-r
的参数,它将跟随它。但是,如果
grep-r
在遍历目录时遇到符号链接,它就不会跟随它(与
grep-r
相反)

假设您有一个目录,其中包含一组文件,其中一个包含指向
的符号链接。
(父目录):

那么

  • grep-r foobar.
    将仅对该目录中的文件进行grep
  • grep-r foobar foo
    将grep父目录(
    )中的文件(在作为参数给出的符号链接之后)
  • grep-R foobar.
    还将grep父目录中的文件(符号链接后面不是作为参数给出的,而是在遍历当前目录时找到的)