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
)

관련 정보