2017-07-17 3 views
0

Ich arbeite mit einem Makefile für die Konvertierung von Dokumenten.
Um anzugeben, welches Dokument zu konvertieren ist, muss ich Ordnernamen in 2 make-Variablen geben:
und DATE.
Die Verzeichnisstruktur ist /data/$(NAME)/$(DATE)Addsuffix Verhalten in Tcsh abgeschlossen

NAME Zahlen und Zeichen enthalten.
DATE folgt diesem Format: YYYYMMDD_XXXXXXXX wo X ist ein Hex-Char.
Ich möchte die NAME und DATE Variablen in Tcsh (obligatorische Verwendung vor Ort) komplett machen, weil es lästig ist, diese zufälligen X-Zeichen einzugeben.

landete ich mir den NAME Variable folgende mit bis vorschlagen: '[email protected]{NAME}[email protected]:/[email protected]' \ 'C/N*/(NAME=)/'

Dies als solange ich unset addsuffix tun erwartet funktioniert.
make N[TAB] » make NAME=[TAB] » make NAME=10001.1
Wenn addsuffix festgelegt ist, befindet sich der Cursor hinter dem nachgestellten Leerzeichen in make NAME=.
Für complete ein neues Wort beginnt, so schlägt es mir nicht die Verzeichnisse für NAME dann vor. Wenn ich dann zu NAME= gehe, fügt es auch den abschließenden / zum Ordnernamen hinzu, der nicht benötigt wird.

Gibt es eine Möglichkeit, dieses Verhalten für diese Vervollständigungen zu deaktivieren?
tcsh.org Zustände:

addsuffix Wenn gesetzt, Vervollständigung von Dateinamen `/‘ bis zum Ende der Verzeichnisse und einem Raum zum Ende der normalen Dateien hinzufügt, wenn sie genau aufeinander abgestimmt sind. Standardmäßig eingestellt.

Offensichtlich möchte ich das Verhalten (wie vom Benutzer festgelegt) für andere Vervollständigung beibehalten.

Antwort

0

Das [Suffix] ist, was ich void sein möchte.

von Dokumentation:

vollständige [Befehl [Wort/Muster/list [: Wählen]/[[Suffix] /] ...]]

So beende ich oben mit complete make \ '[email protected][email protected]:/data/@' \ '[email protected][email protected]`echo $COMMAND_LINE | sed -f /data/sandbox/sbulka/tmp/sed-tmp.sed | xargs ls`@' \ 'C/N*/(NAME=)//' \ 'n/NAME=/(DATE=)//'

Die sed ist in einer Datei, so dass ich nicht quittieren muss. Sieht so aus: s/^.*NAME=\([^ ]*\).*$/\/data\/\1/

Verwandte Themen