
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
)