cpコマンドを使用するときにディレクトリを指定する

cpコマンドを使用するときにディレクトリを指定する

現在特定のディレクトリにいないときに、特定のファイルをそのディレクトリからコピーする方法はありますか?

たとえば、ファイルをコピーするシェル スクリプトを書いています。

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
)

関連情報