¿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 bash
o ejecutar un comando bash desde zshbash -c "compgen -c"
En lo zsh
que 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 fpath
variable
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 compinit
línea en su .zshrc
agregue 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 -c
y 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.
tab
x 1 muestra si hay algunas opciones, si hay muchas que tengo que confirmar; más tab
huelgas 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. tab
las secuencias son combinaciones de teclas, no un " comando equivalente ".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 .
Compgen
interactú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 open
comando en OSX para bastantes cosas, por ejemplo.
compgen -c
ejecuta 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 help
o 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].
Apropos
tambié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
(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.
fd0
compgen -c
funcionará.tu amigo Ken
zsh: command not found: compgen
tu amigo Ken
bash
entoncescompgen -c
funciona, supongo que mi pregunta debería haber sido cuál es el equivalente zsh al comando bashcompgen -c
olvidé la contraseña de stackx
olvidé la contraseña de stackx