Назад | Перейти на главную страницу

Специальное имя файла в OS X; семантика звездочки?

Итак, я использую Mac OS X 10.5, и у меня есть файл с именем

_Mail.grxml

это смешно.

ls -l

покажет файл, но

ls -l *

не буду. Это всего лишь один файл; нота

ls -l | wc -l

дает 43 (количество файлов в каталоге), но

ls -l * | wc -l

дает 42.

Итак, вопрос: есть ли имена файлов, с которыми OSX просто не работает? Или семантика * в командной строке отличается от того, что я ожидал?

(Обратите внимание, что это НЕ единственный файл, имя которого начинается с символа подчеркивания; другие файлы отлично подбираются знаком *).

Вы не говорите, какую оболочку используете, но если это Bash (или аналогичный), у вас может быть переменная среды GLOBIGNORE установите для исключения некоторых шаблонов при расширении имени пути, например, в ls -l *.

GLOBIGNORE
              A colon-separated list of patterns defining the set of filenames
              to be ignored by pathname expansion.  If a filename matched by a
              pathname  expansion  pattern also matches one of the patterns in
              GLOBIGNORE, it is removed from the list of matches.
$ touch _Mail.grxml
$ ls -l
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ ls -l *
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ GLOBIGNORE=*.grxml
$ ls -l
-rw-r--r-- 1 user user 0 2009-11-13 14:57 _Mail.grxml
$ ls -l *
ls: cannot access _*: No such file or directory

(Это единственный файл в тестовом каталоге.)

Мысль - это начинается с ._ (точка подчеркивания, а не только подчеркивание)?