Страница 1 из 1

Подстановка имени файла для команды mkdir в bash

Добавлено: 16 июн 2010, 11:53
nix_user
Возникла задача создать множество каталогов во время ее решения возник интересный момент.

Создаем каталоги вида user001, user002 ...
mkdir user00{0,1,2,3,4,5,6,7,8,9}
Создаем поткаталоги user001/test, user002/test ...
mkdir user00{0,1,2,3,4,5,6,7,8,9}/test

Пробуем создать подкаталоги user001/test2, user002/test2 ...
другой командой
$ mkdir user00?/test2
mkdir: невозможно создать каталог «user00?/test2»: Нет такого файла или каталога

По идее это должно быть работать. Интересно услышать мнение опытных пользователей это ошибка в оболочке или что-то еще?

Да еще дополнение
команда ls работает с подобной конструкцией отлично. Правда файлы уже существуют.
$ ls user00?/test
user000/test:
user001/test:

Re: Подстановка имени файла для команды mkdir в bash

Добавлено: 17 июн 2010, 12:59
nix_user
Прочитав man bash внимательно все стало на свои места.

В случае с {} Brace Expansion
This mechanism is similar to pathname expansion, but the filenames generated need not exist.

Для Pathname Expansion файлы должны существовать.

Так что всё работает правильно. Это два разных механизмы.