9

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

command .*

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

2 ответа2

12

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

GLOBIGNORE=.
shopt -u dotglob

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

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

3

В незнакомой системе, в которой у меня слишком мало времени для проверки используемых настроек (например, GLOBIGNORE), я использую следующую надежную схему:

command .??*
  • Быстро набрать и гарантированно исключить . и .. независимо от окружающей среды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .