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

10

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

command .*

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

Дэвид З
источник

Ответы:

13

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

GLOBIGNORE=.
shopt -u dotglob

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

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

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

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

command .??*
  • Быстрый для ввода и гарантированно исключить .и ..независимо от окружающей среды.
Александр Щебликин
источник
1
Мне всегда нравился такой подход, но знайте, что он не соответствует файлам с 1 .a
символом