Могу ли я сохранить. и ... вне. * расширение?

1257
David Z

Я часто нахожу это раздражающим (или хуже), когда я печатаю

command .* 

в bash и команда применяется к родительскому каталогу и текущему каталогу. Есть ли какая-либо опция оболочки или другая конфигурация, которую я могу настроить, чтобы исключить bash .и ..расширение .*?

9

2 ответа на вопрос

12
camh

В bash, в следующем порядке:

GLOBIGNORE=. shopt -u dotglob 

Когда установлен GLOBIGNORE,. и ... автоматически игнорируются, поэтому вам не нужно устанавливать их в GLOBIGNORE, но если вам нечего игнорировать, у вас не будет ничего, чтобы его установить.

Каждый раз, когда вы устанавливаете для GLOBIGNORE ненулевое значение, bash включает эту опцию dotglob, поэтому впоследствии вам придется ее отключать; в противном случае bash расширится *и включит файлы, начинающиеся с точки.

Хорошо, спасибо! Я бы на самом деле предпочел бы включить `dotglob`, поэтому настройка` GLOBIGNORE` звучит идеально. David Z 13 лет назад 0
Когда GLOBIGNORE установлен, Bash игнорирует `.` и` ..`, но не `foo / .` и` foo / .. `. Возможно, вы захотите использовать `GLOBIGNORE =.: * /.: * / ..`, чтобы эта работа также работала с путевыми именами. user123444555621 9 лет назад 0
3
Alexander Shcheblikin

On an unfamiliar system where I have too little time for checking the settings in use (like GLOBIGNORE) I use the following foolproof pattern:

command .??* 
  • Quick to type and guaranteed to exclude . and .. regardless of the environment.
Мне всегда нравился такой подход, но знайте, что он не соответствует файлам с 1 символом `.a` MestreLion 11 лет назад 1

Похожие вопросы