¿Cómo eliminar .DS_Store de la finalización automática de la línea de comandos usando cd?

Entiendo que .DS_storelos archivos tienen un propósito. Dicho esto, son un fastidio a la hora de autocompletar con el cdcomando. Cuando escribo cdTerminal y presiono la pestaña dos veces, se enumeran todos los directorios en el directorio de trabajo.

¿Hay alguna forma de eliminar .DS_storede esta lista de directorios de autocompletar en la terminal?

Cuando escribo cdTerminal, luego presiono Tabulador dos veces: hay un aviso antes de que se enumeren todas las posibilidades (no solo los directorios).
Eso parece un mejor comportamiento; ¿Sabe cómo evitar la lista de archivos cuando se hace doble tabulación después de cd?
cd */seguido de dos pestañas enumera todos los subdirectorios del directorio actual. Pero tienes que retroceder para seleccionar uno...
@lhf Gracias. Es bueno tener esa opción. Sería mejor si cdfuera lo suficientemente inteligente como para enumerar solo los directorios de forma predeterminada.

Respuestas (4)

export FIGNORE=DS_Storefunciona para mi.

El manual GNU Bash proporciona amplia información sobre finalización programable .

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

FIGNORE [es una] lista de sufijos separados por dos puntos para ignorar al completar el nombre del archivo. Un nombre de archivo cuyo sufijo coincida 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 en FIGNORE, puede usar:

export FIGNORE=$FIGNORE:DS_Store
No estoy seguro de ti, pero tenía que estar $FIGNORE:.DS_Storeen Mac para mí. No funcionó sin el "."
@typeoneerror, lo mismo para mí. Quizás en el pasado funcionó como se publicó. Gracias por hacérmelo saber.
En macOS Sierra 10.12.5, solo me funciona si omito el.

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

El paquete que soluciona 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 completados para cd, y muchos otros comandos bash comunes también se vuelven conscientes del contexto (p. ej., gunzip).

Si bien solo pregunta sobre .DS_Store, creo que eliminar todos los archivos ocultos de la función de autocompletar será mejor en general. Esto se puede hacer con el comando:

enlazar 'desactivar coincidencia de archivos ocultos'

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

Yo usaría este comando:

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

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

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