¿Dónde puedo encontrar documentación para los comandos de shell? [cerrado]

Para usar comandos de shell a través de un programa de terminal, ¿dónde puedo encontrar documentación, ayuda o páginas man para los comandos implementados en Android ?

Si bien sería bueno tenerlos en el dispositivo a través de man , PDF o basado en la web también estaría bien.

Cuando ejecuto "man" desde la terminal, aparece un error y no he encontrado una buena fuente en línea.

@CiroSantilli华涌低端人口六四事件法轮功: el enlace proporcionado es una pregunta más en la lista de comandos disponibles que en las páginas man para ellos. Y las respuestas son bastante pobres.
Una vieja pregunta relacionada... stackoverflow.com/questions/3647014/…

Respuestas (7)

Puede consultar http://www.busybox.net/downloads/BusyBox.html para obtener una descripción de busybox y los comandos que proporciona. Y confía en mí, si vas a trabajar en la consola, probablemente quieras usar busybox.

Cabe señalar que Android de serie no viene con busybox, y en su lugar utiliza toolbox.

La mayoría de los comandos de terminal en Android son la versión limitada de los comandos de terminal estándar de Linux/Unix/POSIX, proporcionados por el toolboxprograma. Notablemente ausente toolboxestá el cpcomando (copia de archivo), debe usar en su cat file1 > file2lugar. Si pasa mucho tiempo en el shell, es posible que desee instalar busybox, que proporciona un conjunto más completo de comandos POSIX estándar.

Aquí hay algo sobre Android Shell: http://benno.id.au/blog/2007/11/13/android-under-the-hood

Como me encontré con el mismo problema que usted, comencé a compilar una lista de comandos útiles en Android Shell , incluidos ejemplos. Una versión alemana está en mi blog.

La mayoría de los comandos de shell de Android "estándar" se encuentran en /system/bin/ y la mayoría de ellos están vinculados a Toolbox, un conjunto de applets con licencia bsd, similar a busybox, pero sin los ""problemas"" de licencias GPL-2 . Toolbox ayuda a Google a eliminar la dependencia del código GPL y está dirigido a tareas de Android específicas y de pequeño tamaño. No fue diseñado para el uso del usuario final.

No hay manuales incorporados en stock de Android, y los subprogramas de la caja de herramientas carecen de documentación, desde los comandos, desde la propia caja de herramientas y en línea. Son copias muy limitadas de lo que la mayoría de los usuarios considerarían las herramientas estándar de tipo POSIX. Más similar a BSD-Utils, por lo que es más probable que las banderas de BSD Util funcionen y el comportamiento es más similar a BSD-Utils que a Posix. Incluso entonces, los subprogramas de Toolbox carecen de muchas de esas banderas.

Lo más parecido a la documentación es el código fuente. Que, como la mayoría de Android, está disponible en línea. Aquí está la versión de Froyo de la fuente de Toolbox: https://android.googlesource.com/platform/system/core/+/froyo/toolbox
Simplemente encuentre la versión que necesita.

Tenga en cuenta que diferentes fabricantes pueden cambiar el código. La caja de herramientas de Samsung es diferente a la de Motorola. Diablos, Samsung Galaxy S Toolbox difiere de Samsung Sidekick 4g (basado en Galaxy S). Los fabricantes pueden agregar subprogramas para su propio uso o cambiar el valor predeterminado para fines específicos. el restartsubprograma de la caja de herramientas funcionará en el teléfono en el que se instaló, pero el subprograma de la caja ocupada restartno lo hará, a menos que se aplique un parche específico. Timey Datetambién son diferentes. Hay otros también. Entonces, Toolbox no es algo que pueda reemplazar por completo con Busybox o GNU-Utils completo o lo que sea.

En versiones anteriores de Android

En versiones anteriores de Android, los comandos de shell tienden a ser:

  • Reescrito específicamente para Android y enviado como parte de Toolbox. No estoy seguro de si Toolbox está realmente documentado en alguna parte.
  • O copiado de NetBSD. Si es así, el comando se volvió a compilar para Android y el comando (pero no su página de manual) se envía con Android.

Úselo typepara decirle dónde está almacenado un comando y ls -len el comando para decirle si es un enlace binario real o simbólico. Si es un enlace simbólico a Toolbox, entonces sabrá que el comando es parte de Toolbox.

Algunos comandos, como kill, están disponibles tanto como un shell integrado (esta es la versión que normalmente se ejecutará) como en /system/bin(esta versión normalmente nunca se ejecutará). typele dirá qué versión se ejecutará.

En Marshmallow y más

Android 6.0 "Marshmallow" y versiones posteriores vienen con Toybox , y la mayoría de los comandos de shell más utilizados ( cp, mv, ls, etcétera) tienden a ser juguetes de Toybox. Los juguetes Toybox normalmente incluyen ayuda integrada; Las páginas del manual oficial no están incluidas.

Aún así, Toybox no incluye todo, por lo que Toybox no proporciona todo. Por ejemplo, incluso en Android 6.0, "Marshmallow" fsck_msdos(que solo debe usarse para verificar tarjetas SD de 32 GB o menos) parece estar tomado de FreeBSD o NetBSD. fsck_exfat(que puede verificar la mayoría de las tarjetas SD de 64 GB o más) se toma de otro lugar. No estoy seguro de dónde.

tu caparazón

En las versiones modernas de Android, el shell es mkshMirBSD Korn shell. Si mkshse está ejecutando, para averiguar su mkshversión, ingrese:

echo $KSH_VERSION

Sugeriría iniciar un dispositivo virtual de Android (AVD), conectarse a él con adb y ejecutar el comando de shell de Android en cuestión:

pdurbin@macbook ~$ cd /Applications/eclipse/android-sdk-mac_x86/platform-tools
pdurbin@macbook platform-tools$ ./adb -s emulator-5554 shell
# /system/bin/pm
usage: pm [list|path|install|uninstall]
       pm list packages [-f]
       pm list permission-groups
       pm list permissions [-g] [-f] [-d] [-u] [GROUP]
       pm list instrumentation [-f] [TARGET-PACKAGE]
       pm list features
       pm path PACKAGE
       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH
       pm uninstall [-k] PACKAGE
       pm enable PACKAGE_OR_COMPONENT
       pm disable PACKAGE_OR_COMPONENT
       pm setInstallLocation [0/auto] [1/internal] [2/external]
[snip]

Si alguien conoce la bandera para dar comandos de shell de Android para simplemente imprimir la pantalla de uso, hágamelo saber. Probé --help, -help, -h, --usage, etc.

Intente ejecutar ls /system/biny vea también http://developer.android.com/guide/developing/tools/adb.html#shellcommands

El conjunto de comandos de shell que utiliza Android parece ser toolbox. La información sobre él parece no estar centralizada (lo que me parece oscuro ), pero uno podría buscar y encontrar información, por ejemplo

http://www.all-things-android.com/content/android-toolbox-command-reference

Para el uso "intensivo" de la línea de comandos, generalmente se recomienda BusyBoxtoolbox como reemplazo de .

Créditos / Relacionado:

https://stackoverflow.com/questions/3647014/how-can-i-get-information-from-the-shell-about-commands-available-in-android-she

https://stackoverflow.com/questions/41498651/how-to-execute-the-help-linux-command-on-android

https://github.com/jackpal/Android-Terminal-Emulator/wiki/Android-Shell-Command-Reference