Tab Tab Completion in der bash Backtick-Umgebung

734
Alexander Torstling

Ich bin auf Ubuntu 10.04 und habe ein paar Probleme mit Bash-Vollendungen in Backticks. Hier ein Beispiel zur Veranschaulichung:

Ich speichere Streaming-URLs in meinen Radiosendern in Textdateien, und ich höre normalerweise durch Tippen zu

$ mplayer `cat ~/stations/some.fm` 

Es wäre toll, wenn ich die Tabulatorvervollständigung verwenden könnte:

$ mplayer `cat ~/stations/<tab> 

In diesem Fall scheint die Tab-Fertigstellung jedoch nicht mit Dateien, sondern nur mit Verzeichnissen zu übereinstimmen. Also ich bekomme

$ mplayer `cat ~/stations/<tab> subdir1 subdir2 $ mplayer `cat ~/stations/ 

Aber keine Dateien! Eine Problemumgehung ist zu verwenden

$ cat ~/stations/some.fm | xargs mplayer 

In diesem Fall funktioniert die Tab-Vervollständigung, aber ich würde lieber die Backtick-Version verwenden. Nicht für dieses Beispiel alleine, aber das hat mich auch in vielen anderen Situationen gebissen.

Weiß jemand hier, wie man das beheben kann / wo der Filter definiert ist?

3

1 Antwort auf die Frage

3
cYrus

Benutzen:

$ mplayer $(cat ~/stations/<tab> 

stattdessen; es tut das Gleiche.

Großartig! Das funktioniert. Neugierig, warum Backticks das nicht tun. Irgendwelche Ideen? Alexander Torstling vor 13 Jahren 0
Vielleicht, weil Backticks jetzt * im alten Stil * sind, aber ich bevorzuge sie. cYrus vor 13 Jahren 0
@ ihr beide: Ja, der Grund ist, dass die Backticks * old-school * sind und $ () der neue Backtick ist. Aber als alter Furz ziehe ich auch Backticks vor. Janne Pikkarainen vor 13 Jahren 0
Backticks sind nicht unbedingt _old-school_ (sogar `sh` unterstützt` $ () `); Das Problem ist, dass es schwierig ist zu wissen, wann es sich um ein Öffnen oder Schließen handelt. Verschachtelung ist eine Hölle. grawity vor 13 Jahren 0