Як видалити .DS_Store з автоматичного заповнення командного рядка за допомогою CD?


16

Я розумію, що .DS_storeфайли служать цілі. Однак, вони створюють неприємності при автоматичному виконанні cdкоманди. Коли я набираю cdтермінал і натискаю вкладку двічі, він перераховує всі каталоги в робочій директорії.

Чи є спосіб видалення .DS_storeз цього списку автоматично заповнених каталогів у терміналі?


Коли я набираю cdтермінал, тоді двічі клавішую Tab: з'являється підказка, перш ніж перераховані всі можливості (не лише каталоги).
Грем Перрін

Це здається кращою поведінкою; Чи знаєте ви, як запобігти переліку файлів при подвійній вкладці після CD?
Джеромі Англім

cd */Далі дві вкладки перелічують усі підкаталоги поточного каталогу. Але ви повинні повернути простір, щоб вибрати одне ...
lhf

@lhf Дякую Добре мати такий варіант. Було б краще, якби cdбуло достатньо розумним, щоб перелічувати каталоги за замовчуванням.
Джеромі Англім

Відповіді:


14

export FIGNORE=DS_Store працює для мене.

Посібник GNU Bash надає вичерпну інформацію про програмоване завершення .

Зокрема, з документації на bash змінні

FIGNORE [це] розділений двокрапкою список суфіксів, який слід ігнорувати при виконанні завершення імені файлу. Ім'я файлу, суфікс якого відповідає одній із записів у FIGNORE, виключається зі списку відповідних імен файлів. Значення вибірки - '.o: ~'

Якщо ви стурбовані тим, що в ньому можуть бути наявні суфікси FIGNORE, ви можете використовувати:

export FIGNORE=$FIGNORE:DS_Store

Не впевнений у собі, але $FIGNORE:.DS_Storeдля мене він мав бути на mac. Не вийшло без "".
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, я думаю, що загалом краще буде видалити всі приховані файли з автозаповнення. Це можна зробити за допомогою команди:

прив’язати "вимкнути приховані файли відповідності"

ви можете додати його ~ / .bash_profile, щоб викликати його щоразу. Це не вимкне автозавершення для прихованих файлів повністю, ви все одно можете ввести '.' (крапка) і натисніть на вкладку.


-1

Я використовував би цю команду:

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

Знайдено тут: /superuser/198569/compressing-folders-on-a-mac-without-the-ds-store


Як це вирішує проблему видалення .DS_Store з автозаповнення?
гр

Ну, насправді це не так. Але я натрапив на цю сторінку, шукаючи "mac zip без .DS_STORE". Тому я подумав, що, можливо, це може допомогти комусь іншому. Це, мабуть, погана ідея.
лінг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.