2010-02-09 14 views
7

Mam dwie komendy, foo i foo-bar, gdzie foo jest dowiązaniem symbolicznym do foo-bar. Chcę móc wpisać f + TAB (udawać, że są to jedyne dwa polecenia na ścieżce rozpoczynające się od f) i mieć jedną z nich do wykonania (co oznacza pełną nazwę i spację po).Zignoruj ​​wpis ścieżki z zakończeniem bashu

Co się dzieje, ale kończy się na foo (bez spacji) z powodu foo-bar. To oczywiście nie jest dużo pracy, aby po prostu uderzyć w spację, ale to przerywa mój przepływ.

Niektóre dodatkowe szczegóły:

  • foo i foo-bar są w tym samym katalogu.
  • Usuwanie/przenoszenie foo nie jest opcją (ukryłem pewne szczegóły).

Czy istnieje sposób, aby zignorować określony wpis ścieżki?

Odpowiedz

10

użyć FIGNORE, choć ma dziwne właściwości.

FIGNORE wymaga poprawnego przyrostka. Tak aby ignorować foo-bar, każdy z nich będzie działać:

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

Import rzeczą jest nie spróbować FIGNORE=foo-bar ponieważ to nie jest właściwa przyrostek.

+0

Dzięki, to zadziałało! –

+0

'FIGNORE = foo-bar' działa dla mnie. –

1

spróbuj tego:

FIGNORE=foo-bar 
+0

To prawie działa, ale jak zaznaczono w przyjętym rozwiązaniu, FIGNORE wymaga odpowiedniego sufiksu. –

+0

@Ed: Przepraszam, źle odczytałem twoje pytanie. Ustawiłem to tak, by ignorowało foo zamiast foo-bar. Jednak "FIGNORE = foo-bar" działa dla mnie. –

+0

Dziwne, nie wiem dlaczego 'FIGNORE = foo-bar' działa dla ciebie (nie dla mnie). 'FIGNORE = oo-bar' działa jednak dla mnie. –