ืคืงื•ื“ืช cp: ื”ืขืชืงื” ื ื›ื•ื ื” ืฉืœ ืชื™ืงื™ื•ืช ืงื‘ืฆื™ื ื‘-*nix

ืคืงื•ื“ืช cp: ื”ืขืชืงื” ื ื›ื•ื ื” ืฉืœ ืชื™ืงื™ื•ืช ืงื‘ืฆื™ื ื‘-*nix

ืžืืžืจ ื–ื” ื™ื—ืฉื•ืฃ ื›ืžื” ื“ื‘ืจื™ื ืœื ื‘ืจื•ืจื™ื ื”ืงืฉื•ืจื™ื ืœืฉื™ืžื•ืฉ ื‘ ื›ืชื•ื‘ื™ื•ืช ื‘ืขื‘ืจื™ืช ื‘ืขืช ื”ืขืชืงื”, ื”ืชื ื”ื’ื•ืช ืคืงื•ื“ื” ืžืขื•ืจืคืœืช cp ื‘ืขืช ื”ืขืชืงื”, ื›ืžื• ื’ื ืฉื™ื˜ื•ืช ื”ืžืืคืฉืจื•ืช ืœืš ืœื”ืขืชื™ืง ื ื›ื•ืŸ ืžืกืคืจ ืขืฆื•ื ืฉืœ ืงื‘ืฆื™ื ืžื‘ืœื™ ืœื“ืœื’ ืื• ืœืงืจื•ืก.

ื ื ื™ื— ืฉืขืœื™ื ื• ืœื”ืขืชื™ืง ื”ื›ืœ ืžืชื™ืงื™ื™ืช /source ืœืชื™ืงื™ื™ืช /target.

ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืขื•ืœื” ื‘ืจืืฉ ื”ื•ื:

cp /source/* /target

ื”ื‘ื” ื ืชืงืŸ ืžื™ื“ ืืช ื”ืคืงื•ื“ื” ื”ื–ื• ืœ:

cp -a /source/* /target

ืžืคืชื— -a ื™ื•ืกื™ืฃ ื”ืขืชืงื” ืฉืœ ื›ืœ ื”ืชื›ื•ื ื•ืช, ื”ื–ื›ื•ื™ื•ืช ื•ื™ื•ืกื™ืฃ ืจืงื•ืจืกื™ื”. ื›ืืฉืจ ืื™ืŸ ืฆื•ืจืš ื‘ืฉื›ืคื•ืœ ืžื“ื•ื™ืง ืฉืœ ื–ื›ื•ื™ื•ืช, ื“ื™ ื‘ืžืคืชื— -r.

ืœืื—ืจ ื”ื”ืขืชืงื”, ื ื’ืœื” ืฉืœื ื›ืœ ื”ืงื‘ืฆื™ื ื”ื•ืขืชืงื• - ืงื‘ืฆื™ื ื”ืžืชื—ื™ืœื™ื ื‘ื ืงื•ื“ื” ื›ืžื•:

.profile
.local
.mc

ื•ื›ื“ื•ืžื”.

ืœืžื” ื–ื” ืงืจื”?

ืžื›ื™ื•ื•ืŸ ืฉืชื•ื•ื™ื ื›ืœืœื™ื™ื ืžืขื•ื‘ื“ื™ื ืขืœ ื™ื“ื™ ื”ืžืขื˜ืคืช (bash ื‘ืžืงืจื” ื˜ื™ืคื•ืกื™). ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, bash ื™ืชืขืœื ืžื›ืœ ื”ืงื‘ืฆื™ื ืฉืžืชื—ื™ืœื™ื ื‘ื ืงื•ื“ื•ืช, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืชื™ื™ื—ืก ืืœื™ื”ื ื›ืืœ ืžื•ืกืชืจื™ื. ื›ื“ื™ ืœื”ื™ืžื ืข ืžื”ืชื ื”ื’ื•ืช ื–ื• ื ืฆื˜ืจืš ืœืฉื ื•ืช ื”ืชื ื”ื’ื•ืช bash ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื”:

shopt -s dotglob

ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืฉืฉื™ื ื•ื™ ื”ืชื ื”ื’ื•ืช ื–ื” ื™ื™ืžืฉืš ืœืื—ืจ ืืชื—ื•ืœ ืžื—ื“ืฉ, ืชื•ื›ืœ ืœื™ืฆื•ืจ ืงื•ื‘ืฅ wildcard.sh ืขื ืคืงื•ื“ื” ื–ื• ื‘ืชื™ืงื™ื™ื” /etc/profile.d (ืื•ืœื™ ืœื”ืคืฆื” ืฉืœืš ื™ืฉ ืชื™ืงื™ื” ืื—ืจืช).

ื•ืื ืื™ืŸ ืงื‘ืฆื™ื ื‘ืกืคืจื™ื™ืช ื”ืžืงื•ืจ, ืื– ื”ืžืขื˜ืคืช ืœื ืชื•ื›ืœ ืœื”ื—ืœื™ืฃ ืฉื•ื ื“ื‘ืจ ื‘ืžืงื•ื ื”ื›ื•ื›ื‘ื™ืช, ื•ื’ื ื”ื”ืขืชืงื” ืชื™ื›ืฉืœ ืขื ืฉื’ื™ืื”. ื™ืฉ ืืคืฉืจื•ื™ื•ืช ื ื’ื“ ื”ืžืฆื‘ ื”ื–ื” failglob ะธ nullglob. ื ืฆื˜ืจืš ืœื”ื’ื“ื™ืจ failglob, ืžื” ืฉื™ืžื ืข ืืช ื‘ื™ืฆื•ืข ื”ืคืงื•ื“ื”. nullglob ืœื ื™ืขื‘ื•ื“, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืžื™ืจ ืžื—ืจื•ื–ืช ืขื ืชื•ื•ื™ื ื›ืœืœื™ื™ื ืฉืœื ืžืฆืื• ื”ืชืืžื” ืœืžื—ืจื•ื–ืช ืจื™ืงื” (ืื•ืจืš ืืคืก), ืืฉืจ ืขื‘ื•ืจ cp ื™ื’ืจื•ื ืœืฉื’ื™ืื”.

ืขื ื–ืืช, ืื ื‘ืชื™ืงื™ื™ื” ื™ืฉ ืืœืคื™ ืงื‘ืฆื™ื ืื• ื™ื•ืชืจ, ื™ืฉ ืœื ื˜ื•ืฉ ืœื—ืœื•ื˜ื™ืŸ ืืช ื’ื™ืฉืช ื”ืชื•ื•ื™ื ื”ื›ืœืœื™ื™ื. ื”ืขื•ื‘ื“ื” ื”ื™ื bash ืžืจื—ื™ื‘ ืชื•ื•ื™ื ื›ืœืœื™ื™ื ืœืฉื•ืจืช ืคืงื•ื“ื” ืืจื•ื›ื” ืžืื•ื“ ื›ืžื•:

cp -a /souce/a /source/b /source/c โ€ฆโ€ฆ /target

ื™ืฉ ื”ื’ื‘ืœื” ืขืœ ืื•ืจืš ืฉื•ืจืช ื”ืคืงื•ื“ื”, ืื•ืชื” ื ื•ื›ืœ ืœื’ืœื•ืช ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื”:

getconf ARG_MAX

ื‘ื•ืื• ื ืงื‘ืœ ืืช ื”ืื•ืจืš ื”ืžืจื‘ื™ ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” ื‘ื‘ืชื™ื:

2097152

ะ˜ะปะธ:

xargs --show-limits

ืื ื—ื ื• ืžืงื‘ืœื™ื ืžืฉื”ื• ื›ืžื•:

โ€ฆ.
Maximum length of command we could actually use: 2089314
โ€ฆ.

ืื– ื‘ื•ืื• ื ืกืชื“ืจ ื‘ืœื™ ืชื•ื•ื™ื ื›ืœืœื™ื™ื ืœื—ืœื•ื˜ื™ืŸ.

ื‘ื•ืื• ืคืฉื•ื˜ ื ื›ืชื•ื‘

cp -a /source /target

ื•ื›ืืŸ ืื ื• ืขื•ืžื“ื™ื ื‘ืคื ื™ ืื™ ื‘ื”ื™ืจื•ืช ื‘ื”ืชื ื”ื’ื•ืช cp. ืื ืชื™ืงื™ื™ืช /target ืœื ืงื™ื™ืžืช, ืื– ื ืงื‘ืœ ืืช ืžื” ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื.

ืขื ื–ืืช, ืื ืชื™ืงื™ื™ืช ื”ื™ืขื“ ืงื™ื™ืžืช, ื”ืงื‘ืฆื™ื ื™ื•ืขืชืงื• ืœืชื™ืงื™ื™ืช /target/source.

ืœื ืชืžื™ื“ ื ื•ื›ืœ ืœืžื—ื•ืง ืืช ื”ืชื™ืงื™ื” /target ืžืจืืฉ, ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ืขืฉื•ื™ื” ืœื”ื›ื™ืœ ืงื‘ืฆื™ื ืฉืื ื• ืฆืจื™ื›ื™ื ื•ื”ืžื˜ืจื” ืฉืœื ื•, ืœืžืฉืœ, ื”ื™ื ืœื”ืฉืœื™ื ืืช ื”ืงื‘ืฆื™ื ื‘- /target ืขื ืงื‘ืฆื™ื ืž- /source.

ืื ืชื™ืงื™ื•ืช ื”ืžืงื•ืจ ื•ื”ื™ืขื“ ื ืงืจืื• ื–ื”ื•ืช, ืœืžืฉืœ, ื”ืขืชืงื ื• ืž-/source ืœ-/home/source, ืื– ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื”:

cp -a /source /home

ื•ืœืื—ืจ ื”ื”ืขืชืงื”, ื”ืงื‘ืฆื™ื ื‘-/home/source ื™ื•ืกืคื• ืขื ืงื‘ืฆื™ื ืž-/source.

ื–ื• ื‘ืขื™ื” ื”ื’ื™ื•ื ื™ืช: ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ื•ืกื™ืฃ ืงื‘ืฆื™ื ื‘ืกืคืจื™ื™ืช ื”ื™ืขื“ ืื ื”ืชื™ืงื™ื•ืช ื ืงืจืื•ืช ื–ื”ื”, ืื‘ืœ ืื ื”ืŸ ืฉื•ื ื•ืช, ืื– ืชื™ืงื™ื™ืช ื”ืžืงื•ืจ ืชืžื•ืงื ื‘ืชื•ืš ื”ื™ืขื“. ื›ื™ืฆื“ ืœื”ืขืชื™ืง ืงื‘ืฆื™ื ืž-/source ืœ-/target ื‘ืืžืฆืขื•ืช cp ืœืœื ืชื•ื•ื™ื ื›ืœืœื™ื™ื?

ื›ื“ื™ ืœืขืงื•ืฃ ืืช ื”ืžื’ื‘ืœื” ื”ืžื–ื™ืงื” ื”ื–ื•, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืคืชืจื•ืŸ ืœื ืžื•ื‘ืŸ ืžืืœื™ื•:

cp -a /source/. /target

ืžื™ ืฉืžื›ื™ืจ ืืช DOS ื•ืœื™ื ื•ืงืก ื›ื‘ืจ ื”ื‘ื™ืŸ ื”ื›ืœ: ื‘ืชื•ืš ื›ืœ ืชื™ืงื™ื” ื™ืฉ 2 ืชื™ืงื™ื•ืช ื‘ืœืชื™ ื ืจืื•ืช "." ื•-"...", ืฉื”ื ืงื™ืฉื•ืจื™ื ืฉืœ ืชื™ืงื™ื•ืช ืคืกืื•ื“ื• ืœืกืคืจื™ื•ืช ื”ื ื•ื›ื—ื™ื•ืช ื•ื”ื’ื‘ื•ื”ื•ืช ื™ื•ืชืจ.

  • ื‘ืขืช ื”ืขืชืงื” cp ื‘ื•ื“ืง ืืช ืงื™ื•ืžื• ื•ืžื ืกื” ืœื™ืฆื•ืจ /target/.
  • ืกืคืจื™ื™ื” ื›ื–ื• ืงื™ื™ืžืช ื•ื”ื™ื /target
  • ืงื‘ืฆื™ื ืž-/source ืžื•ืขืชืงื™ื ืœ-/target ื‘ืฆื•ืจื” ื ื›ื•ื ื”.

ืื–, ืชืœื• ืื•ืชื• ื‘ืžืกื’ืจืช ืžื•ื“ื’ืฉืช ืœื–ื›ืจื•ื ื›ื ืื• ืขืœ ื”ืงื™ืจ:

cp -a /source/. /target

ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ืคืงื•ื“ื” ื–ื• ื‘ืจื•ืจื”. ื”ื›ืœ ื™ืขื‘ื•ื“ ืœืœื ืฉื’ื™ืื•ืช, ืœื ืžืฉื ื” ืื ื™ืฉ ืœืš ืžื™ืœื™ื•ืŸ ืงื‘ืฆื™ื ืื• ื‘ื›ืœืœ.

ืžืžืฆืื™ื

ืื ืืชื” ืฆืจื™ืš ืœื”ืขืชื™ืง ื›ืœ ืงื‘ืฆื™ื ืžืชื™ืงื™ื” ืื—ืช ืœืื—ืจืช, ืื ื—ื ื• ืœื ืžืฉืชืžืฉื™ื ื‘ืชื•ื•ื™ื ื›ืœืœื™ื™ื, ืขื“ื™ืฃ ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ืžืงื•ื cp ื‘ืฉื™ืœื•ื‘ ืขื ื ืงื•ื“ื” ื‘ืกื•ืฃ ืชื™ืงื™ื™ืช ื”ืžืงื•ืจ. ืคืขื•ืœื” ื–ื• ืชืขืชื™ืง ืืช ื›ืœ ื”ืงื‘ืฆื™ื, ื›ื•ืœืœ ืžื•ืกืชืจื™ื, ื•ืœื ืชื™ื›ืฉืœ ืขื ืžื™ืœื™ื•ื ื™ ืงื‘ืฆื™ื ืื• ืœืœื ืงื‘ืฆื™ื ื›ืœืœ.

ืื—ืจื™ืช ื“ื‘ืจ

vmspike ื”ืฆื™ืข ื’ืจืกืช ืคืงื•ื“ื” ืขื ืชื•ืฆืื” ื“ื•ืžื”:

cp -a -T /source /target

ืขื•ื–_ืืœื›ืก

cp -aT /source /target

ื”ืขืจื”: ืจื™ืฉื™ื•ืช T ื™ืฉ ืืช ื”ืžืฉืžืขื•ืช. ืื ืชืขืจื‘ื‘ื• ืืช ื–ื”, ืชืงื‘ืœื• ื–ื‘ืœ ืžื•ื—ืœื˜: ื›ื™ื•ื•ืŸ ื”ื”ืขืชืงื” ื™ืฉืชื ื”.
ืชื•ื“ื”:

  • ื—ื‘ืจื•ืช RUVDS.COM ืœืชืžื™ื›ื” ื•ืœื”ื–ื“ืžื ื•ืช ืœืคืจืกื ื‘ื‘ืœื•ื’ ืฉืœืš ื‘-Habrรฉ.
  • ืœื›ืœ ืชืžื•ื ื” ืงื•ื ืกืคื˜ ืžืฉื•ืœืฉ. ื”ืชืžื•ื ื” ื’ื“ื•ืœื” ืžืื•ื“ ื•ืžืคื•ืจื˜ืช, ื ื™ืชื ืช ืœืคืชื™ื—ื” ื‘ื—ืœื•ืŸ ื ืคืจื“.

ื .ื‘. ืื ื ืฉืœื— ืืช ื›ืœ ื”ืฉื’ื™ืื•ืช ืฉืืชื” ืžื‘ื—ื™ืŸ ื‘ื”ื•ื“ืขื” ืคืจื˜ื™ืช. ืื ื™ ืžื’ื“ื™ืœ ืืช ื”ืงืืจืžื” ืฉืœื™ ื‘ืฉื‘ื™ืœ ื–ื”.

ืคืงื•ื“ืช cp: ื”ืขืชืงื” ื ื›ื•ื ื” ืฉืœ ืชื™ืงื™ื•ืช ืงื‘ืฆื™ื ื‘-*nix

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”