2010-02-09 8 views
7

Ich habe zwei Befehle, foo und foo-bar, wobei foo ist ein Symlink zu foo-bar. Ich möchte in der Lage sein, f + TAB (täuschen Sie vor, dies sind die einzigen beiden Befehle auf dem Pfad, die mit f beginnen) und haben eine von ihnen abgeschlossen sein (dh die vollständigen Namen und der Raum nach).Ignoriere einen Pfadeintrag mit Bash Tab-Vervollständigung

Was passiert, ist, dass es nur foo (kein Leerzeichen) wegen foo-bar abgeschlossen ist. Es ist offensichtlich nicht viel Arbeit, dann einfach die Leertaste zu drücken, aber das unterbricht meinen Fluss.

Einige weitere Details:

  • foo und foo-bar sind im selben Verzeichnis.
  • Löschen/Verschieben foo ist keine Option (Ich habe einige Details ausgeblendet).

Gibt es eine Möglichkeit, einen bestimmten Pfadeintrag zu ignorieren?

Antwort

10

Sie FIGNORE verwenden, obwohl es einige seltsame Eigenschaften.

FIGNORE erfordert ein richtiges Suffix. So foo-bar zu ignorieren, wird eine dieser Arbeit:

FIGNORE=bar 
FIGNORE=-bar 
FIGNORE=r 
FIGNORE=oo-bar 

Der Import Sache ist nichtFIGNORE=foo-bar, um zu versuchen, da es keine richtige Suffix ist.

+0

Danke, das hat funktioniert! –

+0

'FIGNORE = foo-bar' funktioniert für mich. –

1

Geben Sie diesem einen Versuch:

FIGNORE=foo-bar 
+0

Dies funktioniert fast, aber wie in der akzeptierten Lösung angemerkt, benötigt FIGNORE ein richtiges Suffix. –

+0

@Ed: Sorry, ich habe deine Frage falsch gelesen, ich habe es so eingestellt, dass ich foo statt foo-bar ignoriere. 'FIGNORE = foo-bar' funktioniert jedoch für mich. –

+0

Seltsam, nicht sicher, warum 'FIGNORE = foo-bar' für dich funktioniert (nicht für mich). 'FIGNORE = oo-bar' funktioniert aber für mich. –