¿Hay un comando de Linux que enumere todos los comandos y alias disponibles para esta sesión de terminal?
Como si hubiera escrito 'a' y presionado tabulador, pero para cada letra del alfabeto. O ejecutando 'alias' pero también devolviendo comandos.
¿Por qué? Me gustaría ejecutar lo siguiente y ver si hay un comando disponible:
ListAllCommands | grep searchstr
Respuestas:
Puedes usar el bash (1) incorporado
compgen
compgen -c
enumerará todos los comandos que podría ejecutar.compgen -a
enumerará todos los alias que podrías ejecutar.compgen -b
enumerará todos los elementos integrados que podría ejecutar.compgen -k
enumerará todas las palabras clave que podría ejecutar.compgen -A function
enumerará todas las funciones que podría ejecutar.compgen -A function -abck
enumerará todo lo anterior de una vez.Consulte la página de manual para ver otras terminaciones que puede generar.
Para responder directamente a su pregunta:
deberías hacer lo que quieras.
fuente
compgen | grep
, puede ser más eficiente pasar la cadena como argumento acompgen
sí misma (si se sabe que es un prefijo, como se implica en la pregunta). En este caso, eso seríacompgen -ac searchstr
.whatis compgen
y 'Sin entrada manual' paraman compgen
.bash
comando incorporado, no un comando separado con su propia página de manual. Deberá leer labash(1)
página de manual o ejecutarhelp compgen
en unabash
línea de comando.compgen -c | sort | uniq | less
imprimirá todos los comandos disponibles sin líneas duplicadas y ordenados alfabéticamente.Añadir a .bashrc
Si también quieres alias, entonces:
fuente
-L
para seguir enlaces simbólicos a su destino. Nota:-L
es una opción y no forma parte de la expresión coincidente, por lo que debe colocarse antes de la ruta en la línea de comando. En este casofind -L {}
echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 -executable -type f -printf '%P\n' 2> /dev/null | sort -u
(+1 para compatibilidad con zsh)Ahí está el
comando que enumera todos los alias y comandos en $ PATH donde se usa mycommand . Se puede usar para verificar si el comando existe en varias variantes. Aparte de eso ... Probablemente hay algún script que analiza $ PATH y todos los alias, pero no sé acerca de tal script.
fuente
Use "which searchstr". Devuelve la ruta del binario o la configuración de alias si es un alias
Editar: si está buscando una lista de alias, puede usar:
Agregue eso a la respuesta de búsqueda de RUTA que desee. Asume que estás usando bash ..
fuente
El otro comando no funcionó para mí en sistemas integrados, porque requieren bash o una versión más completa de xargs (busybox era limitado).
Los siguientes comandos deberían funcionar en cualquier sistema tipo Unix.
Lista por carpeta:
Listar todos los comandos por nombre
fuente
tr
. ¿Por qué no simplementels $(echo ${PATH//:/ })
?Prueba este script:
fuente
Para usuarios de Mac ( hallazgo no tiene -executable y xargs no tiene -d):
fuente
Es útil enumerar los comandos en función de las palabras clave asociadas con el comando.
Utilizar:
man -k "your keyword"
siéntase libre de combinar con:
| grep "another word"
por ejemplo, para encontrar un editor de texto:
man -k editor | grep text
fuente
Intenta presionar ALT-? (alt y signo de interrogación al mismo tiempo). Dale uno o dos segundos para construir la lista. Debería funcionar en bash.
fuente
Aquí hay una solución que le brinda una lista de todos los ejecutables y alias. También es portátil para sistemas sin
xargs -d
(por ejemplo, Mac OS X), y maneja correctamente las rutas con espacios en ellas.Uso:
myscript.sh [grep-options] pattern
por ejemplo, para encontrar todos los comandos que comienzan conls
mayúsculas y minúsculas, haga lo siguiente:fuente
Método de acceso directo para enumerar todos los comandos. Abra la terminal y presione dos veces el botón "tab" . Eso muestra todos los comandos en la terminal
fuente
grep
exactamente cómo?Alternativamente, puede obtener una lista conveniente de comandos junto con descripciones rápidas (siempre que el comando tenga una página de manual, que es la mayoría):
Entonces solo lo agarras como quieres.
rendimientos:
Los resultados no parecen estar ordenados, por lo que si está buscando una lista larga, puede arrojar un | ordenar | en el medio, y luego canalizar eso a un buscapersonas como less / more / most. ala:
Lo que devuelve una lista ordenada de todos los comandos que tienen "zip" en su nombre o su breve descripción, y bombea ese buscapersonas "menos". (También puede reemplazar "menos" con $ PAGER y usar el localizador predeterminado).
fuente
Siempre puedes lo siguiente:
El shell ejecutará el comando solo si están listados en la ruta env var de todos modos.
fuente
depende, con eso quiero decir que depende de qué shell estás usando. Aquí están las restricciones que veo:
Uso ZSH, así que aquí hay una respuesta zsh, hace las siguientes 3 cosas:
aquí está:
Si usa zsh, esto debería hacerlo.
fuente
El problema es que la finalización de pestañas está buscando su ruta, pero todos los comandos no están en su ruta.
Para encontrar los comandos en su ruta usando bash, puede hacer algo como:
para x en
echo $PATH | cut -d":" -f1
; hacer ls $ x; hechofuente
Aquí hay una función que puede poner en su archivo bashrc:
Ejemplo de uso:
FYI: IFS es una variable que bash usa para dividir cadenas.
Ciertamente, podría haber algunas formas mejores de hacer esto.
fuente
tal vez estoy malentendido, pero ¿qué pasa si presionas Escape hasta que tengas las posibilidades de Mostrar todo X?
fuente
fuente
compgen -c > /tmp/list.txt && /tmp/wc list.txt
¿Por qué no escribes?
En la terminal
El caparazón dirá algo como
EDITAR:
Ok, tomo el voto negativo, porque la respuesta es estúpida, solo quiero saber: ¡¿Qué tiene de malo esta respuesta! El autor de la pregunta dijo:
¡Escribir el comando te dirá si está disponible !.
Probablemente él / ella quiso decir "sin ejecutar el comando" o "incluirlo en un guión" pero no puedo leer su mente (no es que no pueda hacerlo regularmente, es solo que está usando un deflector de lectura mental )
fuente
formathdd
existe el comando. Oh, espera, solo para ejecutarlo y ver. Caramba. Gracias :)en debian: ls / bin / | grep "whatImSearchingFor"
fuente