Да, вам нужен root-доступ для изменения имени пользователя, если система использует файлы passwd для аутентификации. Однако, скорее всего, доступ на вашем сайте контролируется с помощью LDAP
или YP
или других централизованных служб управления учетными записями
. Вам не нужен root
доступ к измените свой пароль, как только вы его узнаете и вам станет доступна утилита passwd
.
Как объяснил @Kusalananda explained, проблема заключается в '
внутри regex. Простым решением является использование "
для regex, так как "
можно экранировать даже внутри "
-кавычек, в отличие от "
, которые не могут быть экранированы внутри "
-кавычек:
grep -rPoh "(?<=(?<!def )my_method )([\"'])(?:(?=(\\?))\2.)*?\1"
Ваше регулярное выражение заключено в одинарные кавычки, но также содержит одинарные кавычки.
Одиночная кавычка в ["']
должна быть экранирована, иначе она будет сигнализировать оболочке о конце строки в кавычках.
Это исправит:
grep -r -P -o -h '(?<=(?<!def )my_method )(["'\''])(?:(?=(\\?))\2.)*?\1'
# ^^^^
В ["'\' ']
первая '
завершает первую часть строки, \ '
вставляет буквальную одинарную кавычку, а последняя '
начинает новую строку в одинарных кавычках, которая будет объединена с предыдущими битами. Только средняя одинарная кавычка окажется в самом регулярном выражении, а две другие будет удален оболочкой.