Geben Sie das Verzeichnis an, wenn Sie den Befehl cp verwenden

Geben Sie das Verzeichnis an, wenn Sie den Befehl cp verwenden

Gibt es eine Möglichkeit, bestimmte Dateien aus einem bestimmten Verzeichnis zu kopieren, wenn ich mich gerade nicht in diesem Verzeichnis befinde?

Ich schreibe beispielsweise ein Shell-Skript, das Dateien kopiert:

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

Ich finde aber, dass das ziemlich unlesbar aussieht, ich möchte eher etwas wie Folgendes machen:

cp \
/some/long123/random/directory/somewhere13/composer.json \
composer.lock \
composer.phar \
gulpfile.js \
package-lock.json \
/var/www/api

Das „/some/long123/random/directory/somewhere13“ wird sich nie ändern.

Gibt es etwas Schöneres als das erste Beispiel?

Antwort1

  • Sie können die Shell-Klammernerweiterung verwenden:

    cp /some/long123/random/directory/somewhere13/{composer.{json,lock,phar},gulpfile.js,index.php,package-lock.json} /var/www/api
    
  • Sie können Shellvariablen verwenden:

    src=/some/long123/random/directory/somewhere13
    
    cp $src/composer.{json,lock,phar} $src/gulpfile.js $src/index.php /var/www/api
    
  • Sie können Bash-Arrays verwenden:

    paths=(
        $src/composer.{json,lock}
        $src/gulpfile.js
        $src/index.php
    )
    
    cp "${paths[@]}" /var/www/api
    
  • Sie können alle oben genannten Punkte kombinieren.

  • Sie können einen völlig anderen Bereitstellungsprozess verwenden, bei dem nicht jedes Mal eine Reihe einzelner Dateien herausgepickt werden müssen, z git checkout. B.

Antwort2

(
  cd /some/long123/random/directory/somewhere13
  cp composer.json composer.lock composer.phar gulpfile.js index.php package-lock.json /var/www/api
)

verwandte Informationen