Wie entferne ich .DS_Store von der Kommandozeilen-Autovervollständigung mit cd?

15

Ich verstehe, dass .DS_storeDateien einen Zweck erfüllen. Das heißt, sie sind ein Ärgernis bei der automatischen Vervollständigung des cdBefehls. Wenn ich cdTerminal eingebe und zweimal die Tabulatortaste drücke, werden alle Verzeichnisse im Arbeitsverzeichnis aufgelistet.

Gibt es eine Möglichkeit, .DS_storediese automatische Vervollständigung der Verzeichnisliste im Terminal zu entfernen ?

Jeromy Anglim
quelle
Wenn ich cdTerminal eingebe, drücke ich zweimal die Tabulatortaste: Es wird eine Eingabeaufforderung angezeigt, bevor alle Möglichkeiten (nicht nur Verzeichnisse) aufgelistet werden.
Graham Perrin
Das scheint ein besseres Verhalten zu sein. Wissen Sie, wie Sie das Auflisten von Dateien beim Double Tab nach einer CD verhindern können?
Jeromy Anglim
cd */gefolgt von zwei Registerkarten werden alle Unterverzeichnisse des aktuellen Verzeichnisses aufgelistet. Aber Sie müssen die
Rücktaste drücken
@lhf Danke. Es ist gut, diese Option zu haben. Es wäre besser, wenn Sie cdintelligent genug wären, um standardmäßig nur Verzeichnisse aufzulisten.
Jeromy Anglim

Antworten:

13

export FIGNORE=DS_Store funktioniert bei mir.

Das GNU Bash-Handbuch bietet umfassende Informationen zur programmierbaren Vervollständigung .

Insbesondere aus der Dokumentation zu bash-Variablen

FIGNORE [ist eine durch Doppelpunkte getrennte Liste von Suffixen, die beim Vervollständigen des Dateinamens ignoriert werden sollen. Ein Dateiname, dessen Suffix mit einem der Einträge in FIGNORE übereinstimmt, wird aus der Liste der übereinstimmenden Dateinamen ausgeschlossen. Ein Beispielwert ist '.o: ~'

Wenn Sie befürchten, dass möglicherweise Suffixe in vorhanden sind FIGNORE, können Sie Folgendes verwenden:

export FIGNORE=$FIGNORE:DS_Store
lhf
quelle
Ich bin mir nicht sicher, aber es musste $FIGNORE:.DS_Storefür mich ein Mac sein. Funktionierte nicht ohne das "."
Tippfehler
@typeoneerror, das gleiche für mich. Vielleicht hat es in der Vergangenheit so funktioniert, wie es gepostet wurde. Danke für die Information.
lhf
1
In macOS Sierra 10.12.5 funktioniert es nur, wenn ich den.
2

Ich denke, was Sie wirklich suchen, ist die kontextsensitive Tab-Vervollständigung für Bash-Befehle. Ist zum Beispiel .DS_Storeeine reguläre Datei, kein Verzeichnis, so sollte sie nicht als mögliche Vervollständigung angezeigt werden cd.

Das Paket, das dieses Problem löst, wird aufgerufen bash-completion. Ich verwende Finks Version ( fink install bash-completion) und sie ist auch bei MacPorts ( port install bash-completion) und Homebrew ( brew install bash-completion) erhältlich.

Nachdem das Paket in Ihrem .bashrc- oder .bash_profile-Verzeichnis installiert und konfiguriert wurde, werden reguläre Dateien nicht mehr als Vervollständigungen für cd angezeigt, und viele andere häufig verwendete Bash-Befehle werden auch kontextsensitiv (z. B. gunzip).

Spinup
quelle
1

Wenn Sie nur nach .DS_Store fragen, ist es im Allgemeinen besser, alle versteckten Dateien von der automatischen Vervollständigung zu entfernen. Dies kann mit dem Befehl erfolgen:

bind 'setze match-hidden-files aus'

Sie können es ~ / .bash_profile hinzufügen, um es jedes Mal für Sie aufrufen zu lassen. Dadurch wird die automatische Vervollständigung für ausgeblendete Dateien nicht vollständig deaktiviert. Sie können dennoch "." (Punkt) und drücke die Tabulatortaste.

okutan
quelle
-1

Ich würde diesen Befehl verwenden:

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

Hier zu finden: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store

Leng
quelle
Wie löst dies das Problem des Entfernens von .DS_Store aus der automatischen Vervollständigung?
grg
Naja, eigentlich geht es nicht. Aber ich bin auf diese Seite gestoßen, als ich nach "mac zip without .DS_STORE" gesucht habe. Also dachte ich, dass es vielleicht jemand anderem helfen könnte. Es ist wahrscheinlich eine schlechte Idee.
Ling