Estoy tratando de emitir este comando
adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"
//OR//
adb shell "echo 'boot-recovery' > /cache/recovery/command"
sale lo mismo:/system/bin/sh: can't create /cache/recovery/command: Permission denied
Otorgué permiso de root para adb y puedo ejecutar otros comandos con root normalmente como touch
por ejemplo
Probé el comando en ambos sentidos cuando el archivo existía y no existía.
Intenté verificar la existencia del archivo:
adb shell "if [ -f /cache/recovery/command ]; then echo "file found"; else echo "error"; fi"
regresó error
a pesar de que el archivo existe de hecho
El objetivo es agregar algunas líneas a la cola de recuperación para que se ejecute la próxima vez que el dispositivo inicie la recuperación.
Corríjame, no soy tan bueno en la línea de comandos de Android, ¿necesito usar un comando diferente para lograr este objetivo?
Más información: Android 8.1 (RR oreo)... Magisk SU... TWRP 3.2 (pero necesita que sea compatible con tantas versiones de Android, recuperaciones y su binarios como sea posible... espero jajaja )
adb shell 'su -c "echo \"boot-recovery\" > /cache/recovery/command"'
adb shell 'su -c "'"echo "boot-recovery" > /cache/recovery/command"'"' #Alternative
adb shell "su -c \"echo 'boot-recovery' > /cache/recovery/command\"" #Another alternative
adb shell 'su -c "'"echo "'"boot-recovery"'" > /cache/recovery/command"'"' #yet another alternative
Eso debería funcionar. No estoy seguro de por qué. Esta respuesta de Codeforester podría ayudarlo si está buscando una razón.
Mi opinión es que, en:
adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"
adb shell lanza un shell no interactivo, las comillas dobles se expanden, dejando
su -c echo 'boot-recovery' > /cache/recovery/command
Sin embargo, en esto, solo 'boot-recovery'
se ejecuta echo con privilegio de root y la salida resultante recae en el usuario de shell (id=2000) que no tiene el privilegio de escribir en el directorio de caché, de ahí el error.
Citar todo después -c
pasa echo 'boot-recovery' > /cache/recovery/command
la instrucción completa al su
ejecutable, y eso funciona.
Permission denied
Device Owner Only
a User Independent
... y ahora abrí el command
archivo, tiene "recuperación de arranque" (éxito)... Funcionó incluso aunque a powershell no le gusta (lo colorea salvajemente)command
pero no sucede nada cuando se inicia la recuperación, por lo que no se logra el objetivo principal.Para mí, esto funcionó:
adb shell "su -c 'boot-recovery > /cache/recovery/command'"
Comienza con una comilla doble antes de su -c
. Luego, una comilla simple para el comando, una comilla simple después del comando y cierre con una comilla doble.
M. Rostami