Wie leite ich die Ausgabe der Befehlsvervollständigung um?

25

In der Befehlszeile kann ich die Ausgabe eines Befehls mit dem Operator >oder |nach dem Befehl in eine Datei oder einen anderen Befehl umleiten oder umleiten . Ich bin auf eine weniger übliche Situation gestoßen, in der ich die Ausgabe in eine Datei umleiten möchte, aber ich scheine nicht die Möglichkeit zu haben, sie umzuleiten:

Wenn an einem neuen Terminal,

[chiliNUT ~]$

Wenn ich drücke, Tabohne vorher etwas einzugeben, werde ich gefragt

display all 1725 possibilities? (y or n)

und wenn ich dann tippe y, bekomme ich eine schöne lange Liste verschiedener Befehle. Wie kann ich diese Ausgabe in eine Datei umleiten oder umleiten? Ich scheine nicht die Chance zu bekommen, > myfile.txtirgendwo zu tippen .

Verwenden von CentOS Release 6.4 (Final) .

chiliNUT
quelle

Antworten:

26

Sie können das eingebaute verwenden 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.

TABAn der Eingabeaufforderung werden Befehle, Shell-Buildins, Schlüsselwörter, Aliase und Funktionen aufgelistet. Man könnte also sagen:

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

um alle Optionen, die Sie bei der Eingabe yTABan der Shell-Eingabeaufforderung sehen, in die Datei zu bekommen myfile.txt.

Beseitigen Sie die grepPipeline, um alle möglichen Befehle, Funktionen, ... in die Datei zu bekommen:

compgen -cbka -A function > myfile.txt
devnull
quelle
1
Genial! Du antwortest wie geschrieben, greifst nur nach den Befehlen / Dateien, die mit dem Buchstaben y beginnen, also compgen -cbka -A function > myfile.txtgreifst du nur nach der vollen Ausgabe. Vielen Dank! Ich wusste (offensichtlich) nie über diese neue interessante Funktion Bescheid.
chiliNUT
Oh, das ist schlau.
Hauke ​​Laging
@chiliNUT Ich habe erwähnt, dass der Befehl diejenigen abrufen würde, die mit y:) beginnen. Dies stimmte ziemlich genau mit dem überein, was Sie in der Frage gezeigt haben!
Devnull
Oh, ha, ein bisschen missverstanden. Das 'y' in meiner Frage entspricht tatsächlich 'yes' vs 'no'; Ich gebe 'y' ein und es gibt alle diese Befehle aus, ich gebe 'n' ein und es gibt nichts aus.
chiliNUT
2
@chiliNUT Ich habe die Antwort aktualisiert, um dies auch widerzuspiegeln.
2.