使用cp指令時指定目錄

使用cp指令時指定目錄

當我目前不在某個目錄中時,有什麼方法可以將某些檔案複製出該目錄嗎?

例如,我正在編寫一個複製檔案的 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
)

相關內容