Per dispositivi Android con root
Puoi prendere in considerazione l'installazione dell'app BusyBox di Stephen. Per Play Store, la versione minima di Android supportata dall'app è Android 1.6 ed è un'app ben aggiornata. In sostanza, installa il file binario busybox/system/xbin
e posiziona i collegamenti simbolici nella stessa directory per tutte le utility che ha.
Che cos'è BusyBox (non l'app)?
BusyBox combina minuscole versioni di molte comuni utility UNIX in un unico piccolo eseguibile. Fornisce sostituzioni per la maggior parte delle utility che di solito trovi nei file GNU, shellutils, ecc. Le utility in BusyBox hanno generalmente meno opzioni rispetto ai loro cugini GNU con funzionalità complete; tuttavia, le opzioni incluse forniscono le funzionalità previste e si comportano in modo molto simile alle loro controparti GNU. BusyBox fornisce un ambiente abbastanza completo per qualsiasi sistema piccolo o incorporato.
Ecco l'elenco ufficiale delle utility che fornisce. find
lo strumento può essere trovato lì.
Un'alternativa competente a BusyBox è Toybox, che ha sostituito Toolbox nella versione Marshmallow.
Toybox combina molte comuni utility da riga di comando Linux in un unico eseguibile con licenza BSD. È semplice, piccolo, veloce e ragionevolmente conforme agli standard ( POSIX-2008 e LSB 4.1 ).
Ecco l'elenco ufficiale dei supporti toybox di utilità. BusyBox, al momento, sembra supportare più strumenti di Toybox.
Non penso che esista un'app per installare il file binario di Toybox, quindi puoi usare la mia risposta qui ai fini della sua installazione. Si noti che la risposta può essere utilizzata per l'installazione di Toybox e BusyBox. L'unico prerequisito è scaricare il file binario da fonti ufficiali.
Link ufficiali per il download:
Per dispositivi Android non rootati
Non so se esiste un approccio universale per tutte le versioni di Android. Detto questo, per Android 4.0 e versioni successive BusyBox Install (No Root) afferma di funzionare. Potrebbero esserci alcune app terminali fornite con il binario BusyBox. Non ho testato personalmente nessuna di queste app terminali, ma è facile capire che il loro più grande svantaggio è: non puoi farne buon uso o molto usando adb .
Esiste tuttavia un approccio, che sembra funzionare per qualsiasi versione di Android precedente alla 4.2 (sulla base dei miei test). /data/local/tmp
è una directory che può essere modificata shell
dall'utente. adb shell
ti concede la shell remota sul dispositivo e accedi come lo stesso utente.
Tutto quello che devi fare è inserire il binario BusyBox / Toybox /data/local/tmp
e creare collegamenti simbolici per i programmi di utilità nella stessa directory. È possibile utilizzare i seguenti passaggi per quello.
(Richiede la configurazione adb nel PC.)
adb push LOCAL_FILE / data / local / tmp / # sostituisce LOCAL_FILE con il percorso del file binario toybox / busybox nel PC
shell adb
chmod 755 / data / local / tmp / FILE # impostazione delle autorizzazioni appropriate per il file binario push. Sostituisci FILE con il nome del file binario che hai inserito nel primo passaggio. Si consiglia di utilizzare una sola parola come nome con tutte le lettere minuscole
box = / data / local / tmp / FILE # che imposta una variabile locale per l'utilizzo nel passaggio successivo. Sostituire FILE come appropriato
$ box | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | mentre leggi la riga; $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line; done # Stiamo eseguendo il binario a cui fa riferimento $ box per elencare tutte le utility, seguite dalla creazione di un elenco e quindi per ogni elemento nell'elenco, stiamo creando un collegamento simbolico in una directory.
Izzy ha raccomandato il modo più semplice per posizionare collegamenti simbolici per il binario BusyBox .
shell adb / data / local / tmp / FILE --install -s / data / local / tmp / # Sostituisci FILE come appropriato. --install -s creerà i collegamenti simbolici desiderati per te in una directory. Il percorso della directory viene fornito accanto ad esso.
A tutti questi strumenti è ora possibile accedere utilizzando il percorso assoluto /data/local/tmp/TOOL
. Sostituisci TOOL con il nome dell'utilità. Esempio di utilizzo della chiamata del comando find:
adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help # alternative way of using a tool
Per sessioni interattive della shell, è possibile aggiungere la posizione di FILE in $ PATH usando il comando export:
export PATH = / data / local / tmp: $ PATH # indica il prefisso / data / local / tmp nel valore esistente di $ PATH. export assicurerebbe che le sotto-shell vedano lo stesso valore in $ PATH
Fatto ciò, ora puoi usare find o un'altra utility BusyBox / Toybox in questo modo:
shell adb
trova --help
Va notato che le modifiche in $ PATH sono applicabili solo per la sessione di shell corrente. Vuol dire che ogni volta che avvii una shell usando adb, dovresti esportare $ PATH.
Detto questo, non esiste una soluzione solo per Android per sessioni di shell non interattive se non quella di trovare un modo per creare una variabile il cui esistenza e valore persistano oltre l'attuale sessione di shell nel PC, non Android . Esempio:
adb shell $lolcat # $lolcat is a temporary variable in my shell on PC and it was assigned the value /system/xbin/toybox. My bash shell is replacing $lolcat with its value and then passing it to adb shell (or you can say, it first expanded the variable and then executed the whole command)