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


10

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

command .*

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

Ответы:


13

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

GLOBIGNORE=.
shopt -u dotglob

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

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


Хорошо, спасибо! Я бы на самом деле предпочел бы dotglobвключить, поэтому настройка GLOBIGNOREзвучит идеально.
Дэвид Z

Когда GLOBIGNORE установлен, Bash игнорирует .и, ..но не foo/.и foo/... Вы можете использовать GLOBIGNORE=.:*/.:*/..это для работы с путевыми именами.
user123444555621

3

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

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

1
Мне всегда нравился такой подход, но знайте, что он не соответствует файлам с 1 .a
символом
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.