루팅 된 Android 기기
Stephen의 BusyBox 앱 설치를 고려할 수 있습니다 . Play 스토어 당 앱에서 지원하는 최소 Android 버전은 Android 1.6이며 잘 업데이트 된 앱입니다. 본질적으로 busybox 바이너리를 설치하고 모든 유틸리티의 동일한 디렉토리에 symlink 를 /system/xbin
배치 합니다.
BusyBox 란 무엇입니까 (앱 아님)?
BusyBox는 여러 가지 일반적인 UNIX 유틸리티의 작은 버전을 하나의 작은 실행 파일로 결합합니다. 일반적으로 GNU fileutils, shellutils 등에서 찾을 수있는 대부분의 유틸리티를 대체합니다. BusyBox의 유틸리티는 일반적으로 모든 기능을 갖춘 GNU 사촌보다 옵션이 적습니다. 그러나 포함 된 옵션은 예상되는 기능을 제공하며 GNU 대응 기능과 매우 유사하게 작동합니다. BusyBox는 소규모 또는 내장형 시스템을위한 상당히 완벽한 환경을 제공합니다.
여기 에 제공되는 유틸리티의 공식 목록이 있습니다. find
도구를 찾을 수 있습니다.
BusyBox 의 유능한 대안 은 Toybox 로 Marshmallow 릴리스의 Toolbox 를 대체 했습니다.
Toybox는 많은 공통 Linux 명령 행 유틸리티를 단일 BSD 라이센스 실행 파일로 결합합니다. 간단하고 작으며 빠르며 합리적으로 표준을 준수합니다 ( POSIX-2008 및 LSB 4.1 ).
다음 은 공식 toybox 지원 유틸리티 목록입니다. BusyBox는 현재 Toybox보다 더 많은 도구를 지원하는 것으로 보입니다.
Toybox 바이너리를 설치하는 앱이 존재하지 않는다고 생각하므로 설치 목적으로 여기 에 내 대답을 사용할 수 있습니다 . 참고 대답은 Toybox와 비지 박스 모두의 설치에 사용할 수 있습니다. 전제 조건 만이 공식 소스에서 바이너리를 다운로드하는 것입니다.
공식 다운로드 링크 :
루팅되지 않은 Android 기기
모든 Android 버전에 보편적 인 접근 방식이 있는지 모르겠습니다. 즉, Android 4.0 이상에서는 BusyBox Install (No Root) 이 작동한다고 주장합니다. BusyBox 바이너리와 함께 제공되는 일부 터미널 앱이있을 수 있습니다. 나는 개인적으로 그러한 터미널 응용 프로그램을 테스트하지했지만 그것은 그들의 가장 큰 단점은 이해하기 쉽습니다 : 당신은 사용하여 일부 또는 많은 좋은 사용을 할 수 없습니다 ADB를 .
그러나 4.2 이상의 안드로이드 버전에서 작동하는 접근법이 있습니다 (내 테스트 기준). 사용자 /data/local/tmp
가 편집 할 수있는 디렉토리입니다 shell
. adb shell
장치에 원격 셸을 부여하고 동일한 사용자로 로그인합니다.
BusyBox / Toybox 바이너리를 넣고 /data/local/tmp
동일한 디렉토리에 유틸리티의 심볼릭 링크를 작성하기 만하면됩니다. 이를 위해 다음 단계를 사용할 수 있습니다.
( PC에서 adb 설정이 필요합니다 .)
adb push LOCAL_FILE / data / local / tmp / # LOCAL_FILE을 PC에서 toybox / busybox 바이너리의 파일 경로로 바꿉니다.
adb 쉘
chmod 755 / data / local / tmp / FILE # 푸시 된 이진 파일에 대한 적절한 권한을 설정합니다. FILE을 첫 번째 단계에서 푸시 한 바이너리 이름으로 바꾸십시오. 소문자를 모두 사용하여 한 단어를 이름으로 사용하는 것이 좋습니다.
box = / data / local / tmp / FILE # 다음 단계에서 사용할 로컬 변수 설정. FILE을 적절히 교체하십시오
$ box | $ box sed 's / \ / \ n / g'| $ box sed '$ d'| 줄을 읽는 동안; $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ line을 수행하십시오. done # 모든 유틸리티를 나열하기 위해 $ box에 의해 참조 된 바이너리를 실행 한 다음 목록을 생성 한 다음 목록의 각 항목에 대해 디렉토리에 심볼릭 링크를 생성합니다.
Izzy는 BusyBox 바이너리에 대한 심볼릭 링크를 배치 하는 가장 간단한 방법을 권장했습니다 .
adb shell / data / local / tmp / FILE --install -s / data / local / tmp / # FILE을 적절히 바꿉니다. --install -s는 디렉토리에 원하는 심볼릭 링크를 만듭니다. 옆에 디렉토리의 경로가 제공됩니다.
절대 경로를 사용하여 모든 도구에 액세스 할 수 있습니다 /data/local/tmp/TOOL
. TOOL을 유틸리티 이름으로 바꾸십시오. find 명령 호출 사용 예 :
adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help # alternative way of using a tool
대화식 쉘 세션의 경우 export 명령을 사용하여 FILE의 위치를 $ PATH에 추가 할 수 있습니다.
export PATH = / data / local / tmp : $ PATH # 기존의 $ PATH 값에 / data / local / tmp를 접두사로 사용합니다. export는 하위 쉘이 $ PATH에서 동일한 값을 보게합니다
다음과 같이 find 또는 다른 BusyBox / Toybox 유틸리티를 사용할 수 있습니다.
adb 쉘
찾기 --help
그것은 것입니다 주목해야 $ PATH의 변경은 현재 쉘 세션에 대해 적용됩니다. 즉, adb를 사용하여 쉘을 시작할 때마다 $ PATH를 내 보내야합니다.
즉, 비 대화식 셸 세션에 대한 Android 전용 솔루션은 Android가 아닌 PC 의 현재 셸 세션 이상으로 존재하고 값이 지속되는 변수를 만드는 방법을 찾는 것 외에는 없습니다 . 예:
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)