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?


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

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).


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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.