Создание полного дерева каталогов сразу
Я хотел бы создать сложную структуру каталогов в bash-скрипте, и у меня сложилось впечатление, что будет работать следующее:
mkdir -p tmpdir/{trunk/sources/{includes,docs},branches,tags}
Что бы создать:
tmpdir
________|______
| | |
branches tags trunk
|
sources
____|_____
| |
includes docs
Однако когда я запускаю свой скрипт, я получаю:
tmpdir
|
trunk
Есть ли быстрый и простой способ сделать это или мне придется прибегнуть к
mkdir -p tmpdir/trunk/sources/includes
mkdir -p tmpdir/trunk/sources/docs
mkdir -p tmpdir/branches
mkdir -p tmpdir/tags
Ответы
Ответ 1
Измените shebang на
#!/bin/bash
для запуска script с bash, поскольку он поддерживает расширение скобок.
Проблема в том, что вы используете оболочку, которая ее не поддерживает. Ваш /bin/sh
не указывает на /bin/bash
, а на что-то вроде /bin/dash
.
https://wiki.ubuntu.com/DashAsBinSh#A.7B
Ответ 2
Вы можете попробовать использовать дерево для этого.
sudo apt install tree
tree -d .
Это отличный инструмент печати, похожий на консольную древовидную структуру каталогов:
├── logstash
│ ├── afolder
│ ├── bfolder
│ └── mappings
├── elastic
│ └── afolder
└── reports
└── afolder