Jak usunąć .DS_Store z automatycznego uzupełniania wiersza poleceń za pomocą cd?

16

Rozumiem, że .DS_storepliki służą celowi. To powiedziawszy, są uciążliwe podczas automatycznego wykonywania cdpolecenia. Kiedy piszę cdw Terminalu i dwukrotnie wciskam Tab, wyświetla wszystkie katalogi w katalogu roboczym.

Czy istnieje sposób usunięcia .DS_storez tej listy autouzupełniania katalogów w terminalu?

Jeromy Anglim
źródło
Kiedy piszę cdw Terminalu, wciśnij klawisz Tab dwa razy: pojawi się monit przed wyświetleniem wszystkich możliwości (nie tylko katalogów).
Graham Perrin
To wydaje się lepsze zachowanie; Czy wiesz, jak zapobiec wyświetlaniu plików podczas podwójnego tabulacji po cd?
Jeromy Anglim
cd */następnie dwie zakładki wyświetlają wszystkie podkatalogi bieżącego katalogu. Ale trzeba Backspace, aby wybrać jeden ...
LHF
@lhf Dzięki. Dobrze jest mieć tę opcję. Byłoby lepiej, gdyby cdbył wystarczająco inteligentny, aby domyślnie wyświetlać tylko katalogi.
Jeromy Anglim

Odpowiedzi:

14

export FIGNORE=DS_Store pracuje dla mnie.

Podręcznik GNU Bash zawiera obszerne informacje na temat programowalnego zakończenia .

W szczególności z dokumentacji zmiennych bash

FIGNORE [to] rozdzielona dwukropkami lista sufiksów, które należy zignorować podczas uzupełniania nazw plików. Nazwa pliku, której sufiks odpowiada jednemu z wpisów w FIGNORE, jest wykluczona z listy zgodnych nazw plików. Przykładowa wartość to „.o: ~”

Jeśli obawiasz się, że mogą istnieć istniejące sufiksy FIGNORE, możesz użyć:

export FIGNORE=$FIGNORE:DS_Store
lhf
źródło
Nie jestem pewien co do ciebie, ale $FIGNORE:.DS_Storedla mnie musiało to być Mac. Nie działał bez „.”
typeoneerror
@typeoneerror, to samo dla mnie. Być może w przeszłości działało tak, jak napisano. Dzięki, że dałeś mi znać.
lhf
1
W systemie macOS Sierra 10.12.5 działa dla mnie tylko wtedy, gdy .
2

Myślę, że tak naprawdę szukasz kontekstowego uzupełniania tabulatorów dla poleceń Bash. Na przykład .DS_Storejest zwykłym plikiem, a nie katalogiem, więc nie powinien być wyświetlany jako możliwe uzupełnienie do cd.

Pakiet, który rozwiązuje ten problem, nazywa się bash-completion. Używam wersji Fink ( fink install bash-completion) i jest ona również dostępna w MacPorts ( port install bash-completion) i Homebrew ( brew install bash-completion).

Po zainstalowaniu pakietu i skonfigurowaniu go w pliku .bashrc lub .bash_profile zwykłe pliki nie będą już wyświetlane jako uzupełnienia dysku CD, a wiele innych typowych poleceń bash również rozpoznaje kontekst (np. gunzip).

zakręcić
źródło
1

Gdy pytasz tylko o .DS_Store, myślę, że usunięcie wszystkich ukrytych plików z autouzupełniania będzie ogólnie lepsze. Można to zrobić za pomocą polecenia:

powiązaj „wyłącz pasujące ukryte pliki”

możesz dodać ~ / .bash_profile, aby wywoływać go za każdym razem. Nie spowoduje to całkowitego wyłączenia autouzupełniania ukrytych plików, nadal możesz wpisać „.” (kropka) i naciśnij klawisz Tab.

okutane
źródło
-1

Użyłbym tego polecenia:

zip -r foo.zip foo -x "*.DS_Store"

Znalezione tutaj: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store

molwa
źródło
Jak to rozwiązuje problem usuwania pliku .DS_Store z autouzupełniania?
grg
Cóż, w rzeczywistości tak nie jest. Ale natknąłem się na tę stronę, szukając „Mac zip bez .DS_STORE”. Pomyślałem więc, że może to pomóc komuś innemu. To chyba zły pomysł.
ling