Какой синтаксис bash используется для создания нового каталога в указанном выше каталоге?

Какой синтаксис bash используется для создания нового каталога в указанном выше каталоге?

Я хочу сделать скрипт для mogrify. Команда mogrify изменит размер изображений в каталоге и поместит измененные изображения в каталог на том же уровне каталога, с тем же именем, что и рабочий каталог, но с суффиксом (_a).

Новый каталог будет позже перемещен в другую коллекцию. Что-то вроде этого,

#!/bin/bash  
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done

Я предполагаю, что ../ обозначает родительский каталог при работе в дочернем каталоге, но здесь мне нужна помощь.

Редактировать: "n" нужно заменить на синтаксис для имени рабочего каталога. Извините, была опечатка, а также третья строка скрипта, должно было быть n, а не x

Редактирование 2: Этот скрипт делает именно то, что мне нужно, и он бесшумный.

#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG

спасибо vgoff за правильный синтаксис PWD и cesarerivahttp://www.cesareriva.com/archives/722за то, что показали мне функцию DEST.

Что-то другое:

${PWD##*/}_a   

не заботится о пробелах в имени каталога и скрипт не срабатывает. Пустой каталог создается в том же каталоге, что и изображения.

Теперь выяснилось, что для $DEST тоже нужны кавычки, предположительно, чтобы помочь mkdir создать каталог с пробелом в имени, а mogrify записать файлы в нужное место, например так

#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG

Редактировать 3: Для этого даже не нужен сценарий, т.е.

mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}

решение1

Я предполагаю, что ../ обозначает родительский каталог при работе в дочернем каталоге, но здесь мне нужна помощь.

Вы угадали правильно.

«n» необходимо заменить на синтаксис имени рабочего каталога.

Ага. В таком случае pwdкоманда будет вашим другом. Заполните ею переменную или используйте $PWDпеременную

решение2

Да. Это родительский каталог.

Одно замечание: это не относится только к bash. Это даже не оболочка. Это часть работы файловых систем.

Файловая система имеет запись в каждом каталоге для ..и это родительский каталог. У каждого также есть запись для .представления текущего каталога.

Связанный контент