¿Cuál es la sintaxis de bash para crear un nuevo directorio en el directorio anterior?

¿Cuál es la sintaxis de bash para crear un nuevo directorio en el directorio anterior?

Mi objetivo es hacer un guión para mogrify. El comando mogrify cambiará el tamaño de las imágenes en un directorio y colocará las imágenes redimensionadas en un directorio en el mismo nivel de directorio, con el mismo nombre que el directorio de trabajo, pero con un sufijo (_a).

El nuevo directorio se trasladará a otra colección más adelante. Algo como esto,

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

Supongo que ../ denota el directorio principal cuando trabajo en un directorio secundario, pero necesito ayuda aquí.

Editar: "n" debe reemplazarse con la sintaxis del nombre del directorio de trabajo. Lo siento, también hubo un error tipográfico en la tercera línea del script, debería haber leído n, no x

Edit2: este script hace exactamente lo que necesito y es silencioso.

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

gracias a vgoff por la sintaxis correcta de PWD y cesarerivahttp://www.cesareriva.com/archives/722por mostrarme la función DEST.

Algo más:

${PWD##*/}_a   

no se preocupa por los espacios en el nombre del directorio y el script falla. Se crea un directorio vacío en el mismo directorio que las imágenes.

Lo descubrí ahora, también necesita cotizaciones en $DEST, presumiblemente para ayudar a mkdir a crear el directorio con un espacio en el nombre y mogrify para escribir los archivos en el lugar correcto, como este

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

Edit3: Ni siquiera necesito un script para esto, es decir

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

Respuesta1

Supongo que ../ denota el directorio principal cuando trabajo en un directorio secundario, pero necesito ayuda aquí.

Has acertado.

"n" debe reemplazarse con la sintaxis del nombre del directorio de trabajo.

Ajá. En ese caso, el pwdcomando será tu amigo. Complete una variable con ella o use la $PWDvariable

Respuesta2

Sí. Es el directorio principal.

Una nota es que esto no es específico de bash. Ni siquiera es cáscara. Es parte de la forma en que funcionan los sistemas de archivos.

El sistema de archivos tiene una entrada en cada directorio ..y ese es el directorio principal. Cada uno también tiene una entrada para .representar el directorio actual.

información relacionada