Comment supprimer .DS_Store de l'auto-complétion en ligne de commande en utilisant cd?

16

Je comprends que les .DS_storefichiers ont un but. Cela dit, ils sont gênants lors de la saisie automatique avec la cdcommande. Lorsque je tape cddans Terminal et appuie deux fois sur l'onglet, il répertorie tous les répertoires du répertoire de travail.

Existe-t-il un moyen de supprimer .DS_storede cette liste de répertoires à saisie semi-automatique dans le terminal?

Jeromy Anglim
la source
Lorsque je tape cddans Terminal, je tape deux fois Tab: il y a une invite avant que toutes les possibilités (pas seulement les répertoires) ne soient listées.
Graham Perrin
Cela semble être un meilleur comportement; Savez-vous comment empêcher la liste des fichiers lors d'un double tabulation après le cd?
Jeromy Anglim
cd */suivi de deux onglets répertorie tous les sous-répertoires du répertoire actuel. Mais vous devez revenir en arrière pour en sélectionner un ...
lhf
@lhf Merci. C'est bien d'avoir cette option. Il serait préférable qu'il cdsoit suffisamment intelligent pour ne répertorier que les répertoires par défaut.
Jeromy Anglim

Réponses:

14

export FIGNORE=DS_Store travaille pour moi.

Le manuel GNU Bash fournit des informations détaillées sur la complétion programmable .

Plus précisément, à partir de la documentation sur les variables bash

FIGNORE [est une] liste de suffixes séparés par deux-points à ignorer lors de la complétion du nom de fichier. Un nom de fichier dont le suffixe correspond à l'une des entrées de FIGNORE est exclu de la liste des noms de fichiers correspondants. Un exemple de valeur est '.o: ~'

Si vous pensez qu'il pourrait y avoir des suffixes FIGNORE, vous pouvez utiliser:

export FIGNORE=$FIGNORE:DS_Store
lhf
la source
Je ne sais pas pour vous, mais ça devait être $FIGNORE:.DS_Storesur mac pour moi. N'a pas fonctionné sans le "."
typeoneerror
@typeoneerror, pareil pour moi. Peut-être que dans le passé, cela fonctionnait comme indiqué. Merci de me le faire savoir.
lhf
1
Dans macOS Sierra 10.12.5, cela ne fonctionne pour moi que si .
2

Je pense que ce que vous cherchez vraiment, c'est l'achèvement contextuel des onglets pour les commandes Bash. Par exemple, .DS_Storeest un fichier normal, pas un répertoire, il ne doit donc pas apparaître comme une complétion possible cd.

Le package qui résout ce problème est appelé bash-completion. J'utilise la version de Fink ( fink install bash-completion), et elle est également disponible à partir de MacPorts ( port install bash-completion) et Homebrew ( brew install bash-completion).

Une fois le package installé et configuré dans votre .bashrc ou .bash_profile, les fichiers normaux n'apparaîtront plus comme des compléments pour cd, et de nombreuses autres commandes bash courantes prennent également en compte le contexte (par exemple. gunzip).

Tournoiement en haut
la source
1

Bien que vous posiez des questions sur uniquement .DS_Store, je pense que la suppression de tous les fichiers cachés de la saisie semi-automatique sera généralement meilleure. Cela peut être fait par la commande:

lier 'désactiver la correspondance des fichiers cachés'

vous pouvez l'ajouter ~ / .bash_profile pour qu'il soit invoqué à chaque fois pour vous. Cela ne désactivera pas complètement l'auto-complétion pour les fichiers cachés, vous pouvez toujours taper '.' (point) et appuyez sur l'onglet pour cela.

okutane
la source
-1

J'utiliserais cette commande:

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

Trouvé ici: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store

lingue
la source
Comment cela résout-il le problème de la suppression de .DS_Store de la saisie semi-automatique?
grg
Eh bien, ce n'est pas le cas. Mais je suis tombé sur cette page en cherchant "mac zip sans .DS_STORE". J'ai donc pensé que cela pourrait peut-être aider quelqu'un d'autre. C'est probablement une mauvaise idée cependant.
ling