Как удалить .DS_Store из автозаполнения командной строки с помощью CD?

16

Я понимаю, что .DS_storeфайлы служат цели. Тем не менее, они являются неприятностью при автозаполнении с cdкомандой. Когда я набираю cdв Терминале и нажимаю tab дважды, он перечисляет все каталоги в рабочем каталоге.

Есть ли способ удаления .DS_storeиз этого списка автозаполнения каталога в терминале?

Джером англим
источник
Когда я набираю cdв Терминале, дважды нажимаю клавишу Tab: появляется подсказка, прежде чем будут перечислены все возможности (не только каталоги).
Грэм Перрин
Это похоже на лучшее поведение; Знаете ли вы, как предотвратить листинг файлов при двойном табулировании после cd?
Джером Энглим
cd */Далее следуют две вкладки со списком всех подкаталогов текущего каталога. Но вы должны
вернуться
@lhf Спасибо. Хорошо иметь такую ​​возможность. Было бы лучше, если бы он cdбыл достаточно умен, чтобы по умолчанию перечислять только каталоги.
Jeromy Anglim

Ответы:

14

export FIGNORE=DS_Store работает для меня.

Руководство по GNU Bash содержит обширную информацию о программируемом завершении .

В частности, из документации по переменным bash

FIGNORE [это] список суффиксов, разделенных двоеточиями, которые следует игнорировать при выполнении завершения имени файла. Имя файла, суффикс которого совпадает с одной из записей в FIGNORE, исключается из списка совпадающих имен файлов. Пример значения: .o: ~

Если вы обеспокоены тем, что могут существовать суффиксы FIGNORE, вы можете использовать:

export FIGNORE=$FIGNORE:DS_Store
LHF
источник
Не уверен насчет тебя, но это должно быть $FIGNORE:.DS_Storeдля меня. Не работал без "."
typeoneerror
@typeoneerror, то же самое для меня. Возможно, в прошлом это работало как отправлено. Спасибо, что дали мне знать.
LHF
1
В macOS Sierra 10.12.5 он работает только для меня, если я опущу.
2

Я думаю, что вы действительно ищете контекстно-зависимое завершение вкладок для команд Bash. Например, .DS_Storeэто обычный файл, а не каталог, поэтому он не должен отображаться как возможное завершение cd.

Пакет, который решает эту проблему, называется bash-completion. Я использую версию Fink ( fink install bash-completion), и она также доступна в MacPorts ( port install bash-completion) и Homebrew ( brew install bash-completion).

После того, как пакет установлен и сконфигурирован в вашем .bashrc или .bash_profile, обычные файлы больше не будут отображаться как завершения для cd, и многие другие общие команды bash также становятся контекстно-зависимыми (например, gunzip).

раскрутить
источник
1

Хотя вы спрашиваете только о .DS_Store, я думаю, что удаление всех скрытых файлов из автозаполнения будет лучше в целом. Это может быть сделано командой:

bind 'отключить match-hidden-files'

Вы можете добавить его ~ / .bash_profile, чтобы он вызывался каждый раз для вас. Это не отключит автозаполнение полностью скрытых файлов, вы все равно можете набрать '.' (точка) и нажмите вкладку для этого.

okutane
источник
-1

Я бы использовал эту команду:

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

Найдено здесь: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store

вереск
источник
Как это решает проблему удаления .DS_Store из автозаполнения?
grg
Ну, на самом деле это не так. Но я наткнулся на эту страницу при поиске «Mac Zip без .DS_STORE». Поэтому я подумал, что, возможно, это могло бы помочь кому-то еще. Это, вероятно, плохая идея, хотя.
Лин