Ich versuche, diesen Befehl auszugeben
adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"
//OR//
adb shell "echo 'boot-recovery' > /cache/recovery/command"
gibt das gleiche aus:/system/bin/sh: can't create /cache/recovery/command: Permission denied
Ich habe Root-Berechtigung für adb erteilt und kann andere Befehle wie touch
zum Beispiel normal mit Root ausführen
Ich habe den Befehl in beide Richtungen ausprobiert, als die Datei existierte und nicht existierte.
Ich habe versucht, die Existenz der Datei zu überprüfen:
adb shell "if [ -f /cache/recovery/command ]; then echo "file found"; else echo "error"; fi"
es wurde zurückgegeben error
, obwohl die Datei tatsächlich existiert
Das Ziel besteht darin, der Wiederherstellungswarteschlange einige Zeilen hinzuzufügen, damit sie beim nächsten Start des Geräts in die Wiederherstellung ausgeführt werden
Bitte korrigieren Sie mich, ich bin nicht so gut in der Android-Befehlszeile, muss ich einen anderen Befehl verwenden, um dieses Ziel zu erreichen?
Weitere Informationen: Android 8.1 (RR oreo) ... Magisk SU ... TWRP 3.2 (muss aber mit so vielen Android-Versionen, Wiederherstellungen und Sub-Binärdateien wie möglich kompatibel sein .... Ich hoffe, lol )
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
Das sollte funktionieren. Ich bin mir nicht sicher warum. Diese Antwort von Codeforester könnte Ihnen helfen, wenn Sie nach einem Grund suchen.
Meine Meinung ist, in:
adb shell "su -c echo 'boot-recovery' > /cache/recovery/command"
adb Shell startet eine nicht interaktive Shell, die doppelten Anführungszeichen werden erweitert und verlassen
su -c echo 'boot-recovery' > /cache/recovery/command
Dabei 'boot-recovery'
wird jedoch nur echo mit Root-Rechten ausgeführt und die resultierende Ausgabe fällt auf den Shell-Benutzer (id=2000) zurück, der nicht das Recht hat, in das Cache-Verzeichnis zu schreiben, daher der Fehler.
Wenn Sie alles zitieren, nachdem -c
die gesamte echo 'boot-recovery' > /cache/recovery/command
Anweisung an su
die ausführbare Datei übergeben wurde, funktioniert das.
Permission denied
Device Owner Only
auf geändert hatte User Independent
... und jetzt habe ich die command
Datei geöffnet, sie enthält "Boot-Recovery" (Erfolg) ..... Es hat sogar funktioniert Obwohl Powershell es nicht mag (es färbt es wild)command
aber beim Booten in die Wiederherstellung passiert nichts, sodass das Hauptziel nicht erreicht wirdBei mir hat das funktioniert:
adb shell "su -c 'boot-recovery > /cache/recovery/command'"
Sie beginnen mit einem doppelten Anführungszeichen davor su -c
. Dann einfaches Anführungszeichen für den Befehl, ein einfaches Anführungszeichen nach dem Befehl und mit einem doppelten Anführungszeichen schließen.
M. Rostami