Невозможно снова назначить права суперпользователя моему процессу с помощью setuid (0 )в том же цикле загрузки

Если я вас правильно понял (см. комментарий ), GNU sedфлаг eк команде sможет помочь вам сделать ее одной -строкой (непроверенной, извините):

sed -E 'h;s_(.*/)(.*)_grep -l \2 \1*.sh_e;x;G;s_([^/]*).sh\n_\1.sh \1 _' scriptfile
  • hсохраняет строку в резервной области, чтобы мы могли восстановить ее позже, если испортим ее
  • s_.*/_grep -l \2 \1*.sh_e— это настоящий трюк.:.*/соответствует всему до последней косой черты, поэтому \1будет путем, а \2— оставшейся частью строки (— именем скрипта ). Теперь grep -lвставляется перед именем скрипта и перед путем; таким образом /my/path/foo.shстановится grep -l foo.sh /my/path/*.sh. Флаг eвыполняет этот шаблон в оболочке, поэтому он заменяется списком файлов *.shв /my/path, которые содержат foo.sh(, надеюсь, только один, в противном случае скрипт необходимо адаптировать)
  • Остальное просто:xизмените оба буфера и добавьте буфер хранения (теперь с ответом оболочки )на шаблон
  • s_([^/]*).sh\n_\1.sh \1 _выполняет очистку, дублирует имя сценария (без.sh)и удаляет новую строку,поэтому вы должны получить желаемый результат
0
23.11.2021, 12:56
0 ответов

Теги

Похожие вопросы