
當我目前不在某個目錄中時,有什麼方法可以將某些檔案複製出該目錄嗎?
例如,我正在編寫一個複製檔案的 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
您可以使用外殼大括號擴充:
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
)