Wie entferne ich .DS_Store von der automatischen Vervollständigung der Befehlszeile mit CD?

Ich verstehe, dass .DS_storeDateien einen Zweck erfüllen. cdAllerdings sind sie bei der automatischen Vervollständigung des Befehls lästig . Wenn ich cdTerminal eingebe und zweimal die Tabulatortaste drücke, werden alle Verzeichnisse im Arbeitsverzeichnis aufgelistet.

Gibt es eine Möglichkeit, .DS_storediese automatisch vervollständigte Verzeichnisliste im Terminal zu entfernen?

Wenn ich cdTerminal eingebe und dann zweimal die Tabulatortaste drücke, erscheint eine Eingabeaufforderung, bevor alle Möglichkeiten (nicht nur Verzeichnisse) aufgelistet werden.
Das scheint ein besseres Benehmen zu sein; Wissen Sie, wie Sie das Auflisten von Dateien verhindern können, wenn Sie nach der CD doppelt tabulieren?
cd */gefolgt von zwei Tabulatoren listet alle Unterverzeichnisse des aktuellen Verzeichnisses auf. Aber Sie müssen die Rücktaste drücken, um eine auszuwählen ...
@lhf Danke. Es ist gut, diese Option zu haben. Es wäre besser, wenn cdes schlau genug wäre, standardmäßig nur Verzeichnisse aufzulisten.

Antworten (4)

export FIGNORE=DS_Storefunktioniert bei mir.

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

Insbesondere aus der Dokumentation zu Bash-Variablen

FIGNORE [ist eine] durch Doppelpunkte getrennte Liste von Suffixen, die bei der Dateinamenvervollständigung 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 es möglicherweise vorhandene Suffixe in FIGNOREgibt, können Sie Folgendes verwenden:

export FIGNORE=$FIGNORE:DS_Store
Bei dir bin ich mir nicht sicher, aber für mich musste es $FIGNORE:.DS_Storeauf dem Mac sein. Ohne "." ging es nicht.
@typeoneerror, das gleiche für mich. Vielleicht hat es in der Vergangenheit wie gepostet funktioniert. Danke für die Information.
In macOS Sierra 10.12.5 funktioniert es bei mir nur, wenn ich das weglasse.

Ich denke, wonach Sie wirklich suchen, ist die kontextsensitive Tab-Vervollständigung für Bash-Befehle. Zum Beispiel .DS_Storeist eine normale Datei kein Verzeichnis, also sollte es nicht als mögliche Vervollständigung von angezeigt werden cd.

Das Paket, das dieses Problem löst, heißt bash-completion. Ich verwende die Version von Fink ( 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 installiert und konfiguriert wurde, werden normale Dateien nicht mehr als Vervollständigungen für cd angezeigt, und viele andere gängige Bash-Befehle werden ebenfalls kontextbewusst (z. B. gunzip).

Während Sie nur nach .DS_Store fragen, denke ich, dass das Entfernen aller versteckten Dateien aus der automatischen Vervollständigung im Allgemeinen besser ist. Dies kann durch den Befehl erfolgen:

bind 'Match-Hidden-Files aus'

Sie können es ~/.bash_profile hinzufügen, damit es jedes Mal für Sie aufgerufen wird. Dadurch wird die automatische Vervollständigung für versteckte Dateien nicht vollständig deaktiviert, Sie können immer noch '.' (Punkt) und drücken Sie die Tabulatortaste dafür.

Ich würde diesen Befehl verwenden:

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

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

Wie löst dies das Problem des Entfernens von .DS_Store aus der automatischen Vervollständigung?
Nun, eigentlich 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 aber wahrscheinlich eine schlechte Idee.