
¿Hay alguna forma de copiar ciertos archivos de un directorio determinado cuando no estoy actualmente en ese directorio?
Por ejemplo, estoy escribiendo un script de shell que copia archivos:
cp \
/some/long123/random/directory/somewhere13/composer.json \
/some/long123/random/directory/somewhere13/composer.lock \
/some/long123/random/directory/somewhere13/composer.phar \
/some/long123/random/directory/somewhere13/gulpfile.js \
/some/long123/random/directory/somewhere13/index.php \
/some/long123/random/directory/somewhere13/package-lock.json \
/var/www/api
Pero siento que esto parece bastante ilegible, quiero hacer algo más como:
cp \
/some/long123/random/directory/somewhere13/composer.json \
composer.lock \
composer.phar \
gulpfile.js \
package-lock.json \
/var/www/api
El "/some/long123/random/directory/somewhere13" nunca cambiará.
¿Algo más interesante que el primer ejemplo?
Respuesta1
Puedes usar la expansión de llaves de shell:
cp /some/long123/random/directory/somewhere13/{composer.{json,lock,phar},gulpfile.js,index.php,package-lock.json} /var/www/api
Puedes usar variables de shell:
src=/some/long123/random/directory/somewhere13 cp $src/composer.{json,lock,phar} $src/gulpfile.js $src/index.php /var/www/api
Puedes usar matrices bash:
paths=( $src/composer.{json,lock} $src/gulpfile.js $src/index.php ) cp "${paths[@]}" /var/www/api
Puedes combinar todo lo anterior.
Puede utilizar un proceso de implementación completamente diferente que no implique seleccionar un montón de archivos individuales cada vez, por ejemplo
git checkout
.
Respuesta2
(
cd /some/long123/random/directory/somewhere13
cp composer.json composer.lock composer.phar gulpfile.js index.php package-lock.json /var/www/api
)