¿Hay alguna manera de enumerar todos los comandos disponibles en la terminal?

¿Hay alguna manera de enumerar todos los comandos disponibles en la terminal?

Sé que Linux tiene, compgen -c¿hay un comando equivalente para OS X?

Actualización: el problema real era que estaba usando zsh en lugar de bash. Entonces, desde zsh, podría abrir basho ejecutar un comando bash desde zshbash -c "compgen -c"

Suponiendo que su caparazón sea bash, entonces compgen -cfuncionará.
tal vez sea porque estoy usando zsh que estoy obteniendozsh: command not found: compgen
sí, si entro bashentonces compgen -cfunciona, supongo que mi pregunta debería haber sido cuál es el equivalente zsh al comando bashcompgen -c
así que creo que si está usando zsh y ha modificado su shell predeterminado en una Mac, entonces ya debe ser un usuario bastante avanzado :)
Estoy destacando su pregunta, porque aunque era "¿hay alguna forma de listar...", siempre es interesante volver y ver para qué están usando otras personas la línea de comando en OSX

Respuestas (5)

En lo zshque necesita para habilitar el sistema de finalización. Por favor, lea man zshcompsys. Para instalar el sistema de finalización ingrese el comando

compinstall

y sigue las instrucciones. Verifique la fpathvariable

echo $fpath

en mi situación necesitaba declarar la variable en mi .zshrc

fpath=(/usr/local/share/zsh/5.0.7/functions)

Esta es la ubicación de mi zsh functions. Después de la compinitlínea en su .zshrcagregue las siguientes líneas

autoload -Uz bashcompinit
bashcompinit

Estas son las entradas de finalización en mi.zshrc

#\\\_ COMPLETIONS _///#
zstyle :compinstall filename '/Users/fd0/.zshrc'
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
autoload -Uz compinit
compinit
autoload -Uz bashcompinit
bashcompinit

Ahora puedo ingresar el comando compgen -cy se comporta de manera similar a bash.

Simplemente toque la tecla Tabulador dos veces ( TabTab). Se le preguntará si desea ver todos los comandos posibles. Toque y y se le presentará una lista.

Puede hacer lo mismo con comandos individuales para ver todas las opciones para ese comando específico.

Buena nota, pero esto solo funciona para mí si ya tengo una cadena parcial en su lugar e incluso entonces es un poco diferente: tabx 1 muestra si hay algunas opciones, si hay muchas que tengo que confirmar; más tabhuelgas recorren las opciones (¿tal vez mi versión 5.8 de zsh o mi configuración son diferentes?). En cualquier caso, compgen es un comando que genera finalizaciones como salida. tablas secuencias son combinaciones de teclas, no un " comando equivalente ".
Esto no funciona en Z shell (configuración nativa) y no he podido configurarlo así. Solía ​​iirc en bash aunque... Dicho esto, en Z shell puede usar los comandos which o seguidos de un y luego presione la tecla para que se le solicite ver todos los listados posibles (a través de whence )where <space><tab>&PATH

Como fd0 comentó anteriormente, la mejor fuente para enumerar rápidamente casi todo lo que puede hacer en la Terminal es mediante el uso del compgen incorporado de Bash .

Compgeninteractúa con la función de "finalización" en Bash, por lo que está destinado a mantener una lista de casi todo lo que puede hacer en el shell. Por lo tanto, es interesante que técnicamente compgen esté enumerando comandos, alias y funciones, así como algunas otras cosas como funciones integradas, variables, grupos, trabajos y nombres de servicios. Mi experiencia es que no enumerará todo, como las aplicaciones que normalmente se ejecutan en la GUI, que mencionaré a continuación. Puede usar el opencomando en OSX para bastantes cosas, por ejemplo.

compgen -cejecuta el comando en un entorno de subcapa, y su salida se usa como posibles finalizaciones, que es probablemente lo que desea. Si Bash es su shell, arrojará información similar para todos los comandos o para un solo comando si presiona Tab Tab.

También es común en OSX que muchos programas se puedan ejecutar desde el shell, por lo que muchos nombres de programas que encontrará en /Aplicaciones también se pueden llamar a través de una CLI desde el shell. De manera similar, muchos programas están (al menos) en /Applications/Utilities , algunas cosas interesantes están en /System/Library/CoreServices/Applications (así como otras cosas en el directorio principal /System...), y también a veces personalizado los programas se colocan en las ubicaciones clásicas de Unix como /usr/bin, usr/local/bin, /opt y /sys/bin.

A menudo, puede encontrar otras cosas interesantes para escribir, probablemente también cubiertas anteriormente, escribiendo helpo help [command or argument], con más información sobre la mayoría de los programas o funciones integradas que vienen con info [command]o man [command]. Apropostambién es bastante interesante, que quizás ya conozca. Estas cosas obtendrán casi todo, me imagino que hay otras cosas que uno simplemente necesita, o debería, piratear y descubrir...

Mientras estás en la Terminal, escribe Tab Tab. Entonces verás:

Display all 1653 possibilities? (y or n).

Presione Yy aparecerá una lista de todos los comandos posibles

En mi caso, presionando tab inserta tab. Entonces, esto probablemente depende de la Terminal que se use.
¿En qué se diferencia esta respuesta de la respuesta que dejé 2 años antes de su respuesta?

(Tab, Tab) hace el truco, pero solo funciona en bash, si no funciona primero, simplemente escriba 'bash' y luego (Tab, Tab) entonces tiene una opción de sí (y) o no (n) entonces estás bien.

Bienvenido a Preguntar Diferente. En lugar de repetir la misma información de dos respuestas anteriores, hubiera sido mejor editar una de ellas con 'simplemente escriba bash'.