
現在特定のディレクトリにいないときに、特定のファイルをそのディレクトリからコピーする方法はありますか?
たとえば、ファイルをコピーするシェル スクリプトを書いています。
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
シェルブレース拡張を使用できます:
cp /some/long123/random/directory/somewhere13/{composer.{json,lock,phar},gulpfile.js,index.php,package-lock.json} /var/www/api
シェル変数を使用できます:
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
)