Comando Linux para listar todos los comandos y alias disponibles

¿Hay algún comando de Linux que enumere todos los comandos y alias disponibles para esta sesión de terminal?

Como si hubiera tecleado ‘a’ y presionado la pestaña, 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 

Puede usar bash (1) compgen

  • compgen -c todos los comandos que podría ejecutar.
  • compgen -a enumerará todos los alias que podría ejecutar.
  • compgen -b todas las incorporaciones 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 todo lo anterior de una vez.

Consulte la página de manual para ver otras terminaciones que puede generar.

Para responder directamente a tu pregunta:

 compgen -ac | grep searchstr 

debería hacer lo que quieras

Agregar a .bashrc

 function ListAllCommands { echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \ -executable -type f -printf '%P\n' | sort -u } 

Si también quieres alias, entonces:

 function ListAllCommands { COMMANDS=`echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \ -executable -type f -printf '%P\n'` ALIASES=`alias | cut -d '=' -f 1` echo "$COMMANDS"$'\n'"$ALIASES" | sort -u } 

Ahí está el

 type -a mycommand 

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 haya algún script que analice $ PATH y todos los alias, pero no conozca ningún script de este tipo.

Use “which searchstr”. Devuelve la ruta del binario o la configuración del alias si es un alias

Editar: si está buscando una lista de alias, puede usar:

 alias -p | cut -d= -f1 | cut -d' ' -f2 

Agregue eso a la búsqueda de PATH que responda. Asume que estás usando bash …

Prueba este script:

 #!/bin/bash echo $PATH | tr : '\n' | while read e; do for i in $e/*; do if [[ -x "$i" && -f "$i" ]]; then echo $i fi done done 

Es útil enumerar los comandos basados ​​en las palabras clave asociadas con el comando.

Use: man -k "your keyword"

siéntete libre de combinar con: | grep "another word" | grep "another word"

por ejemplo, para encontrar un editor de texto: man -k editor | grep text man -k editor | grep text

Intenta presionar ALT-? (alt y signo de interrogación al mismo tiempo). Dale uno o dos para construir la lista. Debería funcionar en bash.

Aquí hay una solución que le da 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 adecuadamente las rutas con espacios en ellas.

 #!/bin/bash (echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@" 

Uso: myscript.sh [grep-options] pattern , por ejemplo, para encontrar todos los comandos que comienzan con ls , insensible a mayúsculas / minúsculas, do:

 myscript -i ^ls 

Para usuarios de Mac ( find no tiene -executable y xargs no tiene -d):

 echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x' 

método de acceso directo para enumerar todos los comandos. Abra el terminal y presione dos veces el botón “tab” . Eso muestra todos los comandos en la terminal

El comando de otros no funcionó para mí en los sistemas integrados, ya que requieren bash o una versión más completa de xargs.

Los siguientes comandos deberían funcionar en cualquier sistema tipo Unix.

Lista por carpeta:

 ls $(echo $PATH | tr ':' ' ') 

Listar todos los comandos por nombre

 ls $(echo $PATH | tr ':' ' ') | grep -v '/' | sort 

Siempre puedes hacer lo siguiente:

 1. Hold the $PATH environment variable value. 2. Split by ":" 3. For earch entry: ls * $entry 4. grep your command in that output. 

El shell ejecutará el comando solo si están listados en la ruta env var de todos modos.

depende, con eso quiero decir que depende de qué shell estás usando. aquí están las restricciones que veo:

  1. debe ejecutarse en el mismo proceso que su shell, para capturar alias y funciones y variables que afectarían los comandos que puede encontrar, piense en PATH o en EDITOR aunque el EDITOR podría estar fuera del scope. Puede tener variables no exportadas que pueden afectar las cosas.
  2. es específico del shell o se va al kernel, / proc / pid / enviorn y los amigos no tienen suficiente información

Yo uso ZSH así que aquí hay una respuesta zsh, hace las siguientes 3 cosas:

  1. ruta de los vertederos
  2. vuelca nombres de alias
  3. vuelca las funciones que están en el env
  4. los clasifica

aquí está:

 feed_me() { (alias | cut -f1 -d= ; hash -f; hash -v | cut -f 1 -d= ; typeset +f) | sort } 

Si usa zsh esto debería hacerlo.

Alternativamente, puede obtener una lista conveniente de comandos junto con descripciones rápidas (siempre que el comando tenga una página man, que la mayoría hace):

 apropos -s 1 '' -s 1 returns only "section 1" manpages which are entries for executable programs. '' is a search for anything. (If you use an asterisk, on my system, bash throws in a search for all the files and folders in your current working directory.) 

Entonces simplemente grep como quieras.

 apropos -s 1 '' | grep xdg 

rendimientos:

 xdg-desktop-icon (1) - command line tool for (un)installing icons to the desktop xdg-desktop-menu (1) - command line tool for (un)installing desktop menu items xdg-email (1) - command line tool for sending mail using the user's preferred e-mail composer xdg-icon-resource (1) - command line tool for (un)installing icon resources xdg-mime (1) - command line tool for querying information about file type handling and adding descriptions for new file types xdg-open (1) - opens a file or URL in the user's preferred application xdg-screensaver (1) - command line tool for controlling the screensaver xdg-settings (1) - get various settings from the desktop environment xdg-user-dir (1) - Find an XDG user dir xdg-user-dirs-update (1) - Update XDG user dir configuration 

Los resultados no parecen ordenados, por lo que si está buscando una lista larga, puede lanzar un | ordenar | en el medio, y luego canalizarlo a un buscapersonas como less / more / most. ala:

 apropos -s 1 '' | sort | grep zip | less 

Que devuelve una lista ordenada de todos los comandos que tienen “zip” en su nombre o su descripción breve, y bombea ese “menos” buscapersonas. (También puede reemplazar “menos” con $ PAGER y usar el buscapersonas predeterminado).

El problema es que completar la pestaña está buscando su ruta, pero no todos los comandos están en su camino.

Para encontrar los comandos en tu camino utilizando bash, podrías hacer algo como:

para x en echo $PATH | cut -d":" -f1 echo $PATH | cut -d":" -f1 ; hacer ls $ x; hecho

Aquí hay una función que puedes poner en tu archivo bashrc:

 función comando-búsqueda
 {
    oldIFS = $ {IFS}
    IFS = ":"

    para p en $ {PATH}
    hacer
       ls $ p |  grep $ 1
    hecho

    export IFS = $ {oldIFS}
 }

Ejemplo de uso:

 $ command-search gnome
 gnome-audio-profiles-properties *
 gnome-expulsar @
 gnome-keyring *
 gnome-keyring-daemon *
 gnome-mount *
 gnome-abierto *
 gnome-grabador de sonido *
 gnome-text-editor @
 gnome-umount @
 gnome-volume-control *
 polkit-gnome-authorization *
 vim.gnome *
 ps

FYI: IFS es una variable que usa bash para dividir cadenas.

Ciertamente, podría haber algunas formas mejores de hacer esto.

tal vez estoy malentendido pero ¿y si presionas Escape hasta que obtengas las posibilidades de Mostrar todo X?

Comandos básicos:

$ touch: – usuario para crear un archivo vacío

Syn: – toque el nombre del archivo

Ej: touch twig

$ ls lista de archivos y directorios

$ ls -l Lista larga

Tipo de archivo, permisos, archivos de enlace, nombre de usuario (o) propietario, nombre de grupo, tamaño de archivo, marca de tiempo, nombre de archivo o directorio.

– archivo normal (o) normal

d directorio

l archivo de enlace

ls -a: muestra todo (incluidos los archivos ocultos)

Los archivos y directorios ocultos comienzan con. (punto)

encuentre más comandos @ http://k2schools.com/linux-commands/

 compgen -c > list.txt && wc list.txt 

¿Por qué no tecleas:

 seachstr 

En la terminal.

El caparazón dirá algo así como

 seacrhstr: command not found 

EDITAR:

Ok, tomo el voto a favor, porque la respuesta es estúpida, solo quiero saber: ¿Qué pasa con esta respuesta? El asker dijo:

y ver si hay un comando disponible.

Escribir el comando le dirá si está disponible !.

Probablemente él / ella quiso decir “sin ejecutar el comando” o “para incluirlo en un guión”, pero no puedo leer su mente (no es que no pueda con regularidad, es solo que usa un deflector de lectura mental )

en debian: ls / bin / | grep “whatImSearchingFor”