Попытка grep $_SESSION['id']
только в файлах PHP
grep -r --include="*.php" "SESSION\['id'\]" /var/www/ > grep.txt
Но я получил что-то ужасное в grep.txt
и не только совпадения.
Как правильно написать синтаксис?
Проблема в том, что $_
интерпретируется в двойных кавычках: grep "$var"
ищет содержание $var
, в то время как grep '$var'
ищет буквальную строку $var
,
Поэтому вам нужно использовать одинарные кавычки, чтобы избежать этого. Поскольку ваш шаблон уже содержит одинарные кавычки, мы должны закрыть и снова открыть:
'$_SESSION['"'"'id'"'"']'
Все вместе:
grep -r --include="*.php" '$_SESSION['"'"'id'"'"']' /var/www/ > grep.txt
Гадкий, я знаю.
Хотел бы я найти парня, который дал GNU grep опции для поиска файлов, чтобы спросить, почему и кто сказал ему, что это разумно!
Во всяком случае … инструмент UNIX для поиска файлов назван find
:
find /var/www -name '*.php' | xargs grep -F "\$_SESSION['id']"
Я использую инструмент командной строки под названиемподтверждени Grep». По умолчанию он ищет только «исходный код», но вы также можете сузить круг до конкретных расширений файлов (например, --php
который соответствует «.php .phpt .php3 .php4 .php5 .phtml» и #! строка с ‘php’ в нем).
Вы также можете настроить его на игнорирование определенных каталогов по умолчанию — я установил локальную конфигурацию, чтобы не заходить в каталог vendor /.
ack --php "\$_SESSION['id']"
$
все еще должен быть \ цитирован — хотя это из-за внешних двойных кавычек.