Comment rediriger la sortie de fin de commande?

25

Sur la ligne de commande, je peux rediriger ou diriger la sortie d'une commande vers un fichier ou une autre commande à l'aide de l' opérateur >ou |après la commande. J'ai rencontré une situation moins standard que je voudrais rediriger la sortie vers un fichier, mais je ne semble pas avoir l'opportunité de le rediriger:

À un nouveau terminal,

[chiliNUT ~]$

si j'appuie Tabsans rien taper d'abord, on me demande

display all 1725 possibilities? (y or n)

et si je tape ensuite y, j'obtiens une belle longue liste de commandes différentes. Comment puis-je rediriger ou diriger cette sortie vers un fichier? Je ne semble pas avoir la chance de taper > myfile.txtn'importe où.

Utilisation de CentOS version 6.4 (finale) .

chiliNUT
la source

Réponses:

26

Vous pouvez utiliser la fonction intégrée compgen:

compgen: compgen [-abcdefgjksuv] [-o option]  [-A action] [-G globpat]
[-W wordlist]  [-F function] [-C command] [-X filterpat] [-P prefix]
[-S suffix] [word]

    Display possible completions depending on the options.

    Intended to be used from within a shell function generating possible
    completions.  If the optional WORD argument is supplied, matches against
    WORD are generated.

    Exit Status:
    Returns success unless an invalid option is supplied or an error occurs.

TABà l'invite répertorierait les commandes, les commandes internes du shell, les mots clés, les alias et les fonctions. Vous pourriez donc dire:

compgen -cbka -A function | grep '^y' > myfile.txt

pour obtenir toutes les options que vous voyez en tapant yTABà l'invite du shell dans le fichier myfile.txt.

Éliminez le greppipeline afin d'obtenir toutes les commandes, fonctions, ... possibles dans le fichier:

compgen -cbka -A function > myfile.txt
devnull
la source
1
Impressionnant! Votre réponse, telle qu'elle est écrite, ne prend en fait que les commandes / fichiers qui commencent par la lettre y, il suffit donc de compgen -cbka -A function > myfile.txtsaisir la sortie complète. Merci! Je n'ai (évidemment) jamais connu cette nouvelle fonction intéressante.
chiliNUT
Oh, c'est intelligent.
Hauke ​​Laging
@chiliNUT J'ai mentionné que la commande ferait démarrer ceux-ci y:) C'était à peu près conforme à ce que vous avez montré dans la question!
devnull
Oh, ha, un peu mal compris. Le «y» dans ma question correspond en fait à «oui» vs «non»; J'entre «y» et il crache toutes ces commandes, j'entre «n» et il ne produit rien.
chiliNUT
2
@chiliNUT J'ai également mis à jour la réponse pour refléter cela.
devnull