当我当前不在某个目录中时,有什么方法可以将某些文件从该目录中复制出来?
例如我正在编写一个复制文件的shell脚本:
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
但我觉得这看起来很难以理解,我想做一些更类似的事情:
cp \
/some/long123/random/directory/somewhere13/composer.json \
composer.lock \
composer.phar \
gulpfile.js \
package-lock.json \
/var/www/api
“/some/long123/random/directory/somewhere13”永远不会改变。
还有什么比第一个例子更简洁的吗?
答案1
您可以使用 shell 括号扩展:
cp /some/long123/random/directory/somewhere13/{composer.{json,lock,phar},gulpfile.js,index.php,package-lock.json} /var/www/api
您可以使用 shell 变量:
src=/some/long123/random/directory/somewhere13 cp $src/composer.{json,lock,phar} $src/gulpfile.js $src/index.php /var/www/api
您可以使用 bash 数组:
paths=( $src/composer.{json,lock} $src/gulpfile.js $src/index.php ) cp "${paths[@]}" /var/www/api
您可以将以上所有内容结合起来。
您可以使用完全不同的部署流程,而不必每次都挑选一堆单独的文件,例如
git checkout
。
答案2
(
cd /some/long123/random/directory/somewhere13
cp composer.json composer.lock composer.phar gulpfile.js index.php package-lock.json /var/www/api
)