尝试仅在PHP文件中grep $_SESSION['id']
grep -r --include="*.php" "SESSION\['id'\]" /var/www/ > grep.txt
但我在grep.txt
中遇到了一些可怕的东西而且不仅仅是匹配。
如何编写正确的语法?
答案 0 :(得分:2)
希望我能找到那个提供GNU grep选项的人来搜索文件,询问为什么以及谁告诉他这是合理的事情!
无论如何......用于查找文件的UNIX工具名为find
:
find /var/www -name '*.php' | xargs grep -F "\$_SESSION['id']"
答案 1 :(得分:1)
问题是$_
正在双引号内解释:grep "$var"
正在寻找$var
的内容,而grep '$var'
正在寻找文字字符串{{ 1}}。
所以你需要使用单引号来避免这种情况。由于您的模式已经包含单引号,我们必须再次关闭并打开:
$var
所有在一起:
'$_SESSION['"'"'id'"'"']'
丑陋,我知道。
答案 2 :(得分:1)
我使用名为“ack-grep”的命令行工具。默认情况下,它只搜索“源代码”,但您也可以缩小到特定的文件扩展名(例如匹配“.php .phpt .php3 .php4 .php5 .phtml”的--php
和#!与'php'在一起)。
您也可以将其设置为默认情况下也忽略特定目录 - 我已将本地配置设置为不进入供应商/目录。
ack --php "\$_SESSION['id']"
$
仍然需要引用 - 但这是因为外部双引号。