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

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.