337 votes

Commande Linux pour lister toutes les commandes et alias disponibles

Existe-t-il une commande Linux qui répertorie toutes les commandes et alias disponibles pour cette session de terminal ?

Comme si vous tapiez 'a' et appuyiez sur la touche tabulation, mais pour chaque lettre de l'alphabet. Ou en exécutant 'alias' mais aussi en renvoyant des commandes.

Pourquoi ? Je voudrais exécuter ce qui suit et voir si une commande est disponible :

ListAllCommands | grep searchstr

691voto

camh Points 13169

Vous pouvez utiliser la fonction intégrée de bash(1) compgen

  • compgen -c listera toutes les commandes que vous pouvez exécuter.
  • compgen -a listera tous les alias que vous pouvez utiliser.
  • compgen -b listera tous les modules intégrés que vous pouvez exécuter.
  • compgen -k vous donnera la liste de tous les mots-clés que vous pouvez utiliser.
  • compgen -A function énumère toutes les fonctions que vous pouvez exécuter.
  • compgen -A function -abck énumérera tout ce qui précède en une seule fois.

Consultez la page de manuel pour d'autres compléments que vous pouvez générer.

Pour répondre directement à votre question :

compgen -ac | grep searchstr

devrait faire ce que vous voulez.

45voto

Ants Aasma Points 22921

Ajouter à .bashrc

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

Si vous voulez aussi des alias, alors :

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
}

32voto

sunny256 Points 3262

Il y a le

type -a mycommand

qui liste tous les alias et toutes les commandes dans $PATH où ma commande est utilisé. Peut être utilisé pour vérifier si la commande existe dans plusieurs variantes. A part ça... Il y a probablement un script qui analyse $PATH et tous les alias, mais je ne connais pas de tel script.

6voto

Aaron Points 574

Utilisez "which searchstr". Retourne soit le chemin du binaire, soit la configuration de l'alias s'il s'agit d'un alias.

Edit : Si vous cherchez une liste d'alias, vous pouvez utiliser :

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

Ajoutez-le à n'importe quelle réponse de recherche PATH que vous voulez. En supposant que vous utilisez bash

5voto

victor hugo Points 16700

Essayez ce 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X