Come rimuovere .DS_Store dal completamento automatico della riga di comando usando cd?


16

Capisco che i .DS_storefile hanno uno scopo. Detto questo, sono un fastidio durante il completamento automatico con il cdcomando. Quando scrivo cdTerminale e premo due volte la scheda, vengono elencate tutte le directory nella directory di lavoro.

C'è un modo per rimuovere .DS_storeda questo elenco di directory di completamento automatico nel terminale?


Quando scrivo cdTerminale, premo due volte Tab: c'è un prompt prima che vengano elencate tutte le possibilità (non solo le directory).
Graham Perrin,

Sembra un comportamento migliore; Sai come impedire la lista dei file quando si esegue la doppia tabulazione dopo cd?
Jeromy Anglim,

cd */seguito da due schede elenca tutte le sottodirectory della directory corrente. Ma bisogna backspace per selezionare una ...
LHF

@lhf Grazie. È bello avere quell'opzione. Sarebbe meglio se cdfosse abbastanza intelligente da elencare solo le directory di default.
Jeromy Anglim,

Risposte:


14

export FIGNORE=DS_Store per me va bene.

Il manuale di GNU Bash fornisce informazioni dettagliate sul completamento programmabile .

In particolare, dalla documentazione sulle variabili bash

FIGNORE [è un] elenco di suffissi separato da due punti da ignorare quando si esegue il completamento del nome file. Un nome file il cui suffisso corrisponde a una delle voci in FIGNORE è escluso dall'elenco dei nomi file corrispondenti. Un valore di esempio è '.o: ~'

Se temi che potrebbero esserci suffissi esistenti FIGNORE, puoi utilizzare:

export FIGNORE=$FIGNORE:DS_Store

Non sono sicuro di te, ma doveva essere $FIGNORE:.DS_Storesu Mac per me. Non ha funzionato senza il "."
typeoneerror

@typeoneerror, lo stesso per me. Forse in passato ha funzionato come pubblicato. Grazie per avermi fatto sapere.
LHF

1
In macOS Sierra 10.12.5, funziona solo se .

2

Penso che quello che stai veramente cercando sia il completamento della scheda sensibile al contesto per i comandi Bash. Ad esempio, .DS_Storeè un file normale, non una directory, quindi non dovrebbe apparire come possibile completamento a cd.

Viene chiamato il pacchetto che risolve questo problema bash-completion. Uso la versione di Fink ( fink install bash-completion), ed è disponibile anche da MacPorts ( port install bash-completion) e Homebrew ( brew install bash-completion).

Dopo che il pacchetto è stato installato e configurato nel tuo .bashrc o .bash_profile, i file regolari non verranno più mostrati come completamenti per cd e molti altri comandi bash comuni diventeranno consapevoli del contesto (es. gunzip).


1

Mentre stai chiedendo solo .DS_Store penso che rimuovere tutti i file nascosti dal completamento automatico sarà meglio in generale. Questo può essere fatto dal comando:

bind 'set off-match-hidden-files off'

puoi aggiungerlo ~ / .bash_profile per averlo invocato ogni volta per te. Questo non disabiliterà completamente il completamento automatico per i file nascosti, è comunque possibile digitare '.' (punto) e premi tab per questo.


-1

Vorrei usare questo comando:

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

Trovato qui: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store


In che modo questo risolve il problema della rimozione di .DS_Store dal completamento automatico?
grg

Bene, in realtà no. Ma mi sono imbattuto in quella pagina mentre cercavo "mac zip senza .DS_STORE". Quindi ho pensato che forse avrebbe potuto aiutare qualcun altro. Probabilmente è una cattiva idea.
ling
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.