Comando Linux para listar todos los comandos y alias disponibles


¿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 tab, 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
Author: Jonathan Leffler, 2009-06-04

21 answers

Puede utilizar el bash(1) incorporado compgen

  • compgen -c listará todos los comandos que podría ejecutar.
  • compgen -a listará todos los alias que podrías ejecutar.
  • compgen -b listará todos los built-ins que podrías 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 sola vez.

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

Para responder directamente a su pregunta:

compgen -ac | grep searchstr

Debería hacer lo que quiera.

 531
Author: camh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-25 01:13:52

Añadir 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
}
 37
Author: Ants Aasma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 20:32:47

Existe el

type -a mycommand

Comando que enumera todos los alias y comandos en PATH PATH donde se usa mycommand. Se puede utilizar para comprobar si el comando existe en varias variantes. Aparte de eso... Probablemente hay algún script alrededor que analiza PATH RUTA y todos los alias, pero no sé nada de ese script.

 22
Author: sunny256,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:36:56

Utilice "which searchstr". Devuelve la ruta del binario o la configuración del alias si se trata de un alias

Editar: Si estás buscando una lista de alias, puedes usar:

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

Agregue eso a la respuesta de búsqueda de RUTA que desee. Asume que estás usando Bash..

 6
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 01:28:23

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
 5
Author: victor hugo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:53:23

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

Use: 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

 3
Author: Finch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-07 17:46:26

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

 2
Author: Igor Krivokon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:50:15

Aquí hay una solución que le da una lista de todos los ejecutables y alias. También es portable a sistemas sin xargs -d (por ejemplo, Mac OS X), y maneja correctamente 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, sin distinción de mayúsculas y minúsculas, haga:

myscript -i ^ls
 2
Author: Adam Rosenfield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 01:50:56

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

echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'
 2
Author: vault,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-24 15:41:04

Método de acceso directo para listar todos los comandos. Abra el terminal y presione dos veces el botón"tab". Eso es mostrar todos los comandos en terminal

 2
Author: denny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-25 19:24:29

El comando others no funcionó para mí en sistemas embebidos, porque 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 ':' ' ')

Lista todos los comandos por nombre

ls $(echo $PATH | tr ':' ' ') | grep -v '/' | sort
 2
Author: Olivier Lasne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-07 09:17:53

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.

 1
Author: OscarRyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:39:11

Depende, con eso quiero decir que depende de qué shell está utilizando. 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 a los comandos que puede encontrar, pensar RUTA o EDITOR, aunque el EDITOR podría estar fuera de alcance. Puedes tener variables no reportadas que pueden afectar cosas.
  2. es específico del shell o su salida al núcleo, /proc / pid / enviorn y sus amigos no tienen suficiente información

Uso ZSH así que aquí está una respuesta zsh, hace las siguientes 3 cosas:

  1. vuelca la ruta
  2. elimina nombres de alias
  3. vuelca funciones que están en el env
  4. los ordena

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.

 1
Author: ms4720,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-20 14:56:58

Alternativamente, puede obtener una lista conveniente de comandos junto con descripciones rápidas (siempre que el comando tenga una página de manual, lo 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 lo grep como quieras.

apropos -s 1 '' | grep xdg

Rinde:

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 estar ordenados, por lo que si está buscando una lista larga, puede lanzar un | sort | 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 breve descripción, y las bombas que el" menos " buscapersonas. (También podría reemplazar "less" con P PAGER y usar el paginador predeterminado.)

 1
Author: Katastic Voyage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-11 08:08:58

El problema es que el tab-completion está buscando su ruta, pero todos los comandos no están en su ruta.

Para encontrar los comandos en tu path usando bash podrías hacer algo como:

Para x in echo $PATH | cut -d":" -f1; do ls x x; done

 0
Author: nikudesu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:42:59

Aquí hay una función que puede poner en su archivo bashrc:

function command-search
{
   oldIFS=${IFS}
   IFS=":"

   for p in ${PATH}
   do
      ls $p | grep $1
   done

   export IFS=${oldIFS}
}

Ejemplo de uso:

$ command-search gnome
gnome-audio-profiles-properties*
gnome-eject@
gnome-keyring*
gnome-keyring-daemon*
gnome-mount*
gnome-open*
gnome-sound-recorder*
gnome-text-editor@
gnome-umount@
gnome-volume-control*
polkit-gnome-authorization*
vim.gnome*
$

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

Ciertamente podría haber algunas mejores maneras de hacer esto.

 0
Author: Craig Wright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:58:59

Tal vez estoy mal entendido, pero lo que si se presiona Escape hasta que tienes la pantalla Todas las posibilidades X ?

 -1
Author: LB40,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 01:02:33

Comandos básicos:

Touch touch: - usuario para crear archivo vacío

Syn: - toque el nombre del archivo

Ex: toca rama

List ls lista de archivos y directorios

Listing ls-l Long listing

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 dir.

- archivo regular (o) normal

D directorio

L archivo de enlace

Ls-a: muestra el todo (incluyendo los archivos ocultos)

Archivos ocultos y los directorios comienzan con . (dot)

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

 -1
Author: reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-11 06:50:11
compgen -c > list.txt && wc list.txt
 -2
Author: some1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-05 04:55:56

¿Por qué no escribes:

seachstr

En la terminal.

La cáscara dirá algo como

seacrhstr: command not found 

EDITAR:

Ok, tomo el voto negativo, porque la respuesta es estúpida, solo quiero saber: ¡Qué hay de malo con esta respuesta!!! El preguntador dijo:

y ver si hay un comando disponible.

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

Probablemente él / ella quiso decir " sin ejecutar el orden " o "para incluirlo en un guión" pero no puedo leer su mente (no es que no pueda regularmente, es solo que él está usando un deflector de lectura mental )

 -3
Author: OscarRyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:57:33

En debian: ls / bin / / grep"whatImSearchingFor"

 -5
Author: Gabriel Sosa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-04 00:37:41