Commande Linux pour lister toutes les commandes et alias disponibles
Existe-t-il une commande Linux qui listera toutes les commandes et alias disponibles pour cette session de terminal?
Comme si vous tapiez ' A ' et appuyez sur tab, mais pour chaque lettre de l'alphabet. Ou exécuter 'alias' mais aussi renvoyer des commandes.
Pourquoi? Je voudrais exécuter ce qui suit et voir si une commande est disponible:
ListAllCommands | grep searchstr
21 réponses
Vous pouvez utiliser le bash(1) haut-compgen
- {[2] } listera toutes les commandes que vous pourriez exécuter.
- {[3] } listera tous les alias que vous pourriez exécuter.
- {[4] } listera tous les built-ins que vous pourriez exécuter.
- {[5] } Liste tous les mots-clés que vous pouvez exécuter.
- {[6] } listera toutes les fonctions que vous pourriez exécuter.
- {[7] } listera tout ce qui précède en une seule fois.
Vérifiez la page de manuel pour d'autres complétions que vous pouvez générer.
Pour répondre directement à votre question:
compgen -ac | grep searchstr
Devrait faire ce que vous voulez.
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
}
Il y a le
type -a mycommand
Commande qui répertorie tous les Alias et commandes dans $ PATH où mycommand est utilisé. Peut être utilisé pour vérifier si la commande existe en plusieurs variantes. Autre que cela... Il y a probablement un script autour qui analyse $PATH et tous les alias, mais ne connaît pas un tel script.
Utiliser "qui searchstr". Renvoie le chemin du binaire ou l'alias setup s'il s'agit d'un alias
Modifier: Si vous cherchez une liste d'Alias, vous pouvez utiliser:
alias -p | cut -d= -f1 | cut -d' ' -f2
Ajoutez cela à la réponse de recherche de chemin que vous aimez. Suppose que vous utilisez bash..
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
Il est utile de lister les commandes en fonction des mots-clés associés à la commande.
Utiliser: man -k "your keyword"
Hésitez pas à combiner avec:| grep "another word"
Par exemple, Pour trouver un éditeur de texte:
man -k editor | grep text
Essayez D'appuyer sur ALT-? (alt et point d'interrogation en même temps). Donnez - lui une seconde ou deux pour construire la liste. Il devrait fonctionner dans bash.
Voici une solution qui vous donne une liste de tous les exécutables et alias. Il est également portable pour les systèmes Sans xargs -d
(par exemple Mac OS X), et gère correctement les chemins avec des espaces.
#!/bin/bash
(echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@"
Utilisation: myscript.sh [grep-options] pattern
, par exemple, pour trouver toutes les commandes qui commencent par ls
, insensibles à la casse, faire:
myscript -i ^ls
Pour les utilisateurs de Mac (trouver n'est pas exécutable et xargs - n'a pas -d):
echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'
Méthode de raccourci pour lister toutes les commandes. Ouvrez le terminal et appuyez deux fois sur le bouton "tab". C'est afficher toutes les commandes dans le terminal
La commande others n'a pas fonctionné pour moi sur les systèmes embarqués, car ils nécessitent bash ou une version plus complète de xargs.
Les commandes suivantes devraient fonctionner sur N'importe quel système de type Unix.
Liste par dossier :
ls $(echo $PATH | tr ':' ' ')
Liste toutes les commandes par nom
ls $(echo $PATH | tr ':' ' ') | grep -v '/' | sort
Vous pouvez toujours à ce qui suit:
1. Hold the $PATH environment variable value.
2. Split by ":"
3. For earch entry:
ls * $entry
4. grep your command in that output.
Le shell exécutera la commande uniquement s'ils sont listés dans le chemin env var de toute façon.
Cela dépend, je veux dire que cela dépend de quel shell vous utilisez. voici les contraintes que je vois:
- doit s'exécuter dans le même processus que votre shell, pour attraper les Alias et les fonctions et les variables qui affecteraient les commandes que vous pouvez trouver, pensez à PATH ou EDITOR bien que L'éditeur puisse être hors de portée. Vous pouvez avoir des variables non exportées qui peuvent affecter les choses.
- c'est spécifique au shell ou votre départ dans le noyau, / proc / pid / enviorn et vos amis n'en ont pas assez informations
J'utilise ZSH alors voici une réponse zsh, il fait les 3 choses suivantes:
- décharges chemin
- vide les noms d'alias
- décharges fonctions qui sont dans l'env
- les trie
Voici:
feed_me() {
(alias | cut -f1 -d= ; hash -f; hash -v | cut -f 1 -d= ; typeset +f) | sort
}
Si vous utilisez zsh cela devrait le faire.
Alternativement, vous pouvez obtenir une liste pratique de commandes couplées à des descriptions rapides (tant que la commande a une page de manuel, ce que la plupart font):
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.)
Ensuite, vous le grep comme vous voulez.
apropos -s 1 '' | grep xdg
Rendements:
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
Les résultats ne semblent pas être triés, donc si vous cherchez une longue liste, vous pouvez lancer un / sort | au milieu, puis le rediriger vers un pager comme less/more/most. ala:
apropos -s 1 '' | sort | grep zip | less
Qui renvoie une liste triée de toutes les commandes "zip" dans leur nom ou leur courte description, et les pompes que le pager "moins". (Vous pouvez également remplacer "less" par $PAGER et utiliser le pager par défaut.)
Le problème est que l'achèvement des onglets recherche votre chemin, mais toutes les commandes ne sont pas dans votre chemin.
Pour trouver les commandes dans votre chemin en utilisant bash, vous pouvez faire quelque chose comme:
Pour x dans echo $PATH | cut -d":" -f1
; do ls $x; done
Voici une fonction que vous pouvez mettre dans votre fichier bashrc:
function command-search { oldIFS=${IFS} IFS=":" for p in ${PATH} do ls $p | grep $1 done export IFS=${oldIFS} }
Exemple d'utilisation:
$ 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 est une variable que bash utilise pour diviser les chaînes.
Il pourrait certainement y avoir de meilleures façons de le faire.
Peut-être que je suis malentendu mais que faire si vous appuyez sur Escape jusqu'à ce que vous ayez L'affichage de toutes les possibilités X?
Commandes de Base:
$ touch: - utilisateur pour créer un fichier vide
Syn:- appuyez sur le nom de fichier
Ex: toucher rama
$ls liste des fichiers et répertoires
$ ls –l Longue liste
Type de fichier, autorisations, fichiers de liens, nom de l'utilisateur(ou)propriétaire, nom du groupe, taille du fichier, horodatage, nom du fichier ou du répertoire.
- fichier normal (ou) normal
Répertoire D
L fichier de liaison
Ls –A: affiche tout (y compris les fichiers cachés)
Fichiers cachés et les répertoires commencent par . (point)
Trouver plus de commandes @ http://k2schools.com/linux-commands/
Pourquoi ne Tapez-vous pas simplement:
seachstr
Dans le terminal.
Le shell dira quelque chose comme
seacrhstr: command not found
Modifier:
Ok, je prends le downvote, parce que la réponse est stupide, je veux juste savoir: Quel est le problème avec cette réponse!!! Le demandeur a dit:
et de voir si une commande est disponible.
Taper la commande vous indiquera si elle est disponible!.
Probablement il/elle voulait dire " sans exécuter le commande " ou "pour l'inclure dans un script" Mais je ne peux pas lire son esprit ( n'est-ce pas que je ne peux pas régulièrement, c'est juste qu'il porte un déflecteur de lecture mentale )