¿Cómo eliminar .DS_Store de la línea de comandos de autocompletado usando cd?

16

Entiendo que los .DS_storearchivos tienen un propósito. Dicho esto, son una molestia cuando se completa automáticamente con el cdcomando. Cuando escribo cden Terminal y presiono la tecla dos veces, enumera todos los directorios en el directorio de trabajo.

¿Hay alguna forma de eliminar .DS_storede esta lista de directorio de autocompletar en el terminal?

Jeromy Anglim
fuente
Cuando escribo cden Terminal, luego presiono Tab dos veces: hay un mensaje antes de que se enumeren todas las posibilidades (no solo los directorios).
Graham Perrin el
Eso parece un mejor comportamiento; ¿Sabes cómo evitar la inclusión de archivos cuando se duplican las pestañas después de cd?
Jeromy Anglim
cd */seguido de dos pestañas enumera todos los subdirectorios del directorio actual. Pero debe retroceder para seleccionar uno ...
lhf
@lhf Gracias. Es bueno tener esa opción. Sería mejor si cdfuera lo suficientemente inteligente como para enumerar solo directorios de forma predeterminada.
Jeromy Anglim

Respuestas:

14

export FIGNORE=DS_Store funciona para mi.

El manual de GNU Bash proporciona información extensa sobre la finalización programable .

Específicamente, de la documentación sobre variables bash

FIGNORE [es una] lista de sufijos separados por dos puntos para ignorar cuando se completa el nombre de archivo. Un nombre de archivo cuyo sufijo coincide con una de las entradas en FIGNORE se excluye de la lista de nombres de archivo coincidentes. Un valor de muestra es '.o: ~'

Si le preocupa que pueda haber sufijos existentes FIGNORE, puede usar:

export FIGNORE=$FIGNORE:DS_Store
lhf
fuente
No estoy seguro de ti, pero tenía que estar $FIGNORE:.DS_Storeen Mac para mí. No funcionó sin el "."
typeoneerror
@typeoneerror, lo mismo para mí. Quizás en el pasado funcionó según lo publicado. Gracias por hacérmelo saber.
lhf
1
En macOS Sierra 10.12.5, funciona para mí solo si .
2

Creo que lo que realmente está buscando es la finalización de la pestaña contextual para los comandos Bash. Por ejemplo, .DS_Storees un archivo normal, no un directorio, por lo que no debe aparecer como una posible finalización cd.

El paquete que resuelve este problema se llama bash-completion. Uso la versión de Fink ( fink install bash-completion), y también está disponible en MacPorts ( port install bash-completion) y Homebrew ( brew install bash-completion).

Después de instalar y configurar el paquete en su .bashrc o .bash_profile, los archivos normales ya no aparecerán como finalizaciones para cd, y muchos otros comandos bash comunes también se vuelven conscientes del contexto (p. Ej. gunzip).

girar
fuente
1

Si bien solo pregunta sobre .DS_Store, creo que eliminar todos los archivos ocultos del autocompletado será mejor en general. Esto se puede hacer con el comando:

enlazar 'establecer archivos ocultos de coincidencia'

puede agregarlo ~ / .bash_profile para que se invoque cada vez por usted. Esto no deshabilitará el autocompletado para archivos ocultos por completo, aún puede escribir '.' (punto) y presione la pestaña para ello.

okutane
fuente
-1

Yo usaría este comando:

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

Encontrado aquí: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store

abadejo
fuente
¿Cómo resuelve esto el problema de eliminar .DS_Store del autocompletado?
grg
Bueno, en realidad no lo hace. Pero me topé con esa página mientras buscaba "mac zip sin .DS_STORE". Entonces pensé que tal vez podría ayudar a alguien más. Sin embargo, probablemente sea una mala idea.
ling