0
Ich habe 2 Ordner, die OrdnerZSH Datei Beendigungen von 2 Pfad
/me/foo/:
a/
b/
c/
/me/bar/:
c/
d/
e/
I Fertigstellung enthält Funktion für Befehl erstellen möchten baz
so dass
$ baz [tab]
Abschluss Argumente wie folgt
gibta b c d e
beachten Sie das Duplikat c
wird nur einmal geschrieben und enthält nicht den abschließenden Schrägstrich.
Ich weiß, wie man die Fertigstellung mit _files
, aber das gibt mir nur Datei aus einem einzigen Verzeichnis.
Wie mache ich das?
Dies sieht nicht so aus wie 'services' arbeitet nur einmal enthalten würde. Es hängt auch von der Implementierung von 'Basisname' ab, von denen nicht alle standardmäßig mehrere Argumente zulassen. Ich würde vorschlagen, 'local -U services = ((foo | bar)/* (/: t))' 'zu verwenden. Mit '-U' behält ein Array nur das erste Auftreten identischer Werte bei. '(foo | bar)/*' entspricht einem Kind der Verzeichnisse 'foo' und' bar'. Das Qualifikationsmerkmal '(/)' beschränkt dies nur auf Verzeichnisse und '(: t)' entfernt alle führenden Pfadkomponenten aka 'Basisname'. Es beseitigt auch die Notwendigkeit für einen externen Befehl. – Adaephon
Hmm ich bekomme ein schlechtes Muster beim Versuch 'local -U-Dienste ((foo | bar)/* (/: t)' und 'echo $ service' der Fehler war' a.zsh: 1: schlechtes Muster: services ((foo | bar)/* (/: t) \ necho \ n' wo finde ich die Dokumentation dieses Musters? – ahmy
Es sieht so aus als ob '' 'fehlt, aber ich bekomme die selbe Fehlermeldung (auch beim' = ') wenn ich versuche, dies auf einem älteren' zsh' mit Version 5.0.6 zu tun, benutze ich derzeit 5.2 Es scheint, dass die Fähigkeit, Arrays in einem einzigen Befehl zu setzen und zuzuweisen [wurde in 5.1 hinzugefügt] (http: // (zsh.sourceforge.net/releases.html). Die Trennung in 'local -U services' und' services = (...) 'sollte funktionieren. Zur Dokumentation: siehe Abschnitt [Dateinamenerstellung] (http://zh.sourceforge.net/Doc/Release/Expansion.html#Filename-Generation) im ZSH-Handbuch. – Adaephon