Como remover .DS_Store de auto-completar de linha de comando usando cd?

14

Eu entendo que os .DS_storearquivos servem a um propósito. Dito isso, eles são um incômodo quando o preenchimento automático com o cdcomando. Quando eu digito cdno Terminal e pressiono a tecla duas vezes, ele lista todos os diretórios no diretório de trabalho.

Existe uma maneira de remover .DS_storedesta listagem de diretórios auto-completar no terminal?

Jeromy Anglim
fonte
Quando eu digito cdno Terminal, em seguida, tecla Tab duas vezes: há um prompt antes de todas as possibilidades (não apenas diretórios) são listados.
Graham Perrin
Isso parece um comportamento melhor; Você sabe como evitar a listagem de arquivos quando o dobro de tabulação após o cd?
Jeromy Anglim
cd */seguido por duas guias lista todos os subdiretórios do diretório atual. Mas você tem que retroceder para selecionar um ...
lhf
@lhf Obrigado. É bom ter essa opção. Seria melhor se cdfosse inteligente o suficiente para listar apenas os diretórios por padrão.
Jeromy Anglim

Respostas:

12

export FIGNORE=DS_Store funciona para mim.

O manual do GNU Bash fornece informações abrangentes sobre a conclusão programável .

Especificamente, a partir da documentação sobre variáveis ​​bash

FIGNORE [é] uma lista de sufixos separados por dois-pontos para ignorar ao executar o nome do arquivo. Um nome de arquivo cujo sufixo corresponde a uma das entradas em FIGNORE é excluído da lista de nomes de arquivos correspondentes. Um valor de amostra é '.o: ~'

Se estiver preocupado com a possibilidade de haver sufixos existentes FIGNORE, você poderá usar:

export FIGNORE=$FIGNORE:DS_Store
lhf
fonte
Não tenho certeza sobre você, mas tinha que ser $FIGNORE:.DS_Storeno mac para mim. Não funcionou sem o "."
typeoneerror
@typeoneerror, o mesmo para mim. Talvez no passado funcionou como postado. Obrigado por me avisar.
lhf
1
No macOS Sierra 10.12.5, ele funciona para mim somente se eu omitir o.
2

Eu acho que o que você está realmente procurando é conclusão de tabulação ciente de contexto para comandos Bash. Por exemplo, .DS_Storeé um arquivo regular, não um diretório, portanto, ele não deve ser exibido como uma conclusão possível para cd.

O pacote que resolve esse problema é chamado bash-completion. Eu uso a versão do Fink ( fink install bash-completion), e também está disponível em MacPorts ( port install bash-completion) e Homebrew ( brew install bash-completion).

Depois que o pacote é instalado e configurado em seu .bashrc ou .bash_profile, os arquivos regulares não serão mais mostrados como conclusões para o cd, e muitos outros comandos comuns do bash também se tornarão conscientes do contexto (por exemplo, gunzip).

spinup
fonte
1

Enquanto você está perguntando apenas sobre .DS_Store, acho que remover todos os arquivos ocultos do preenchimento automático será melhor em geral. Isso pode ser feito pelo comando:

bind 'set match-hidden-files off'

você pode adicionar ~ / .bash_profile para que seja invocado toda vez para você. Isso não desabilitará o preenchimento automático para arquivos ocultos completamente, você ainda poderá digitar '.' (ponto) e clique na aba para isso.

Okutane
fonte
-1

Eu usaria este comando:

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

Encontrado aqui: https://superuser.com/questions/198569/compressing-folders-on-a-mac-without-the-ds-store

mentindo
fonte
Como isso resolve o problema de remover o .DS_Store do autocomplete?
grg
Bem, na verdade isso não acontece. Mas eu tropecei naquela página enquanto procurava por "mac zip without. DS_STORE". Então eu pensei que talvez pudesse ajudar alguém. Provavelmente é uma má ideia.
ling