cp command: dèan lethbhreac de phasganan faidhle gu ceart gu * nix

cp command: dèan lethbhreac de phasganan faidhle gu ceart gu * nix

Nochdaidh an artaigil seo cuid de rudan nach eil follaiseach co-cheangailte ri cleachdadh cairtean fiadhaich nuair a bhios tu a’ dèanamh lethbhreac, giùlan àithne dà-sheaghach cp nuair a bhios tu a’ dèanamh lethbhreac, a bharrachd air dòighean a leigeas leat àireamh mhòr de fhaidhlichean a chopaigeadh gu ceart gun a bhith a’ leum no a’ bualadh.

Canaidh sinn gum feum sinn a h-uile càil a chopaigeadh bhon phasgan / stòr chun phasgan / targaid.

Is e a’ chiad rud a thig gu inntinn:

cp /source/* /target

Nach ceartaich sinn an òrdugh seo sa bhad gu:

cp -a /source/* /target

Prìomh -a cuiridh e lethbhreac de gach buadhan, còraichean agus cuiridh e ath-chuairteachadh. Nuair nach eil feum air ath-riochdachadh ceart de chòraichean, tha iuchair gu leòr -r.

Às deidh dhuinn lethbhreac a dhèanamh, lorgaidh sinn nach deach a h-uile faidhle a chopaigeadh - faidhlichean a’ tòiseachadh le dot mar:

.profile
.local
.mc

agus an leithid.

Carson a thachair seo?

Leis gu bheil cairtean fiadhaich air an giullachd leis an t-slige (bash ann an cùis àbhaisteach). Gu gnàthach, bheir bash seachad a h-uile faidhle a’ tòiseachadh le dotagan, oir bidh e gan làimhseachadh mar fhalach. Gus an giùlan seo a sheachnadh feumaidh sinn giùlan atharrachadh bash a 'cleachdadh an òrdugh:

shopt -s dotglob

Gus dèanamh cinnteach gun lean an t-atharrachadh giùlain seo às deidh ath-thòiseachadh, faodaidh tu faidhle wildcard.sh a chruthachadh leis an àithne seo sa phasgan /etc/profile.d (Is dòcha gu bheil pasgan eile aig an sgaoileadh agad).

Agus mura h-eil faidhlichean anns an eòlaire stòr, cha bhith e comasach don t-slige dad a chuir an àite an rionnag, agus bidh copaidh cuideachd a’ fàiligeadh le mearachd. Tha roghainnean an aghaidh an t-suidheachaidh seo failglob и nullglob. Feumaidh sinn a shuidheachadh failglob, a chuireas casg air an àithne a bhith air a chur an gnìomh. nullglob nach obraich, leis gu bheil e ag atharrachadh sreang le cairtean-fiadhaich nach do lorg maids gu sreang falamh (fad neoni), a tha airson cp nì e mearachd.

Ach, ma tha mìltean de fhaidhlichean no barrachd anns a’ phasgan, bu chòir dòigh-obrach nan cairtean fiadhaich a thrèigsinn gu tur. Is e an fhìrinn gu bheil bash a’ leudachadh chairtean fiadhaich gu loidhne-àithne glè fhada mar:

cp -a /souce/a /source/b /source/c …… /target

Tha crìoch air fad na loidhne-àithne, agus gheibh sinn a-mach a’ cleachdadh an àithne:

getconf ARG_MAX

Gheibh sinn an fhad as motha den loidhne-àithne ann am bytes:

2097152

No:

xargs --show-limits

Gheibh sinn rudeigin mar:

….
Maximum length of command we could actually use: 2089314
….

Mar sin, dèanamaid às aonais cairtean fiadhaich gu tur.

Leig leinn dìreach sgrìobhadh

cp -a /source /target

Agus an seo tha sinn an aghaidh mì-chinnt giùlain cp. Mura h-eil am pasgan / targaid ann, gheibh sinn na tha a dhìth oirnn.

Ach, ma tha am pasgan targaid ann, thèid na faidhlichean a chopaigeadh chun phasgan /target/source.

Chan urrainn dhuinn an-còmhnaidh am pasgan / targaid a sguabadh às ro-làimh, oir dh’ fhaodadh gum bi faidhlichean ann a dh’ fheumas sinn agus is e ar n-amas, mar eisimpleir, na faidhlichean ann an / targaid a chuir ri faidhlichean bho / source.

Nam biodh na pasganan stòr agus ceann-uidhe air an ainmeachadh mar an ceudna, mar eisimpleir, bha sinn a 'dèanamh lethbhreac bho / source gu / home / source, b' urrainn dhuinn an òrdugh a chleachdadh:

cp -a /source /home

Agus an dèidh lethbhreac a dhèanamh, bhiodh na faidhlichean ann an / home/source air an cur ris le faidhlichean bho / source.

Is e duilgheadas loidsigeach a tha seo: is urrainn dhuinn faidhlichean a chuir anns an eòlaire cinn-uidhe ma tha na pasganan air an ainmeachadh mar an ceudna, ach ma tha iad eadar-dhealaichte, thèid am pasgan tùsail a chuir am broinn a’ chinn-uidhe. Mar a nì thu lethbhreac de fhaidhlichean bho / stòr gu / targaid a’ cleachdadh cp gun chairtean fiadhaich?

Gus faighinn timcheall air a’ chuingealachadh cronail seo, bidh sinn a’ cleachdadh fuasgladh neo-fhollaiseach:

cp -a /source/. /target

Tha an fheadhainn a tha eòlach air DOS agus Linux air a h-uile càil a thuigsinn mar-thà: taobh a-staigh gach pasgan tha 2 phasgan do-fhaicsinneach “.” agus “..”, a tha nan ceanglaichean meallta-phasgan ris na clàran gnàthach agus nas àirde.

  • Nuair a bhios tu a’ dèanamh lethbhreac cp sgrùdaidhean airson a bhith ann agus a’ feuchainn ri /target/ a chruthachadh.
  • Tha eòlaire mar seo ann agus is e /targaid a th’ ann
  • Thèid faidhlichean o / thùs a chopaigeadh gu /targaid gu ceart.

Mar sin, croch e ann am frèam trom nad chuimhne no air a’ bhalla:

cp -a /source/. /target

Tha giùlan na h-àithne so soilleir. Obraichidh a h-uile dad gun mhearachdan, ge bith a bheil millean faidhle agad no nach eil idir.

toraidhean

Ma dh'fheumas tu lethbhreac a dhèanamh uile faidhlichean bho aon phasgan gu fear eile, cha bhith sinn a’ cleachdadh cairtean fiadhaich, tha e nas fheàrr an cleachdadh nan àite cp còmhla ri ùine aig deireadh am pasgan stòr. Nì seo leth-bhreac de gach faidhle, a’ gabhail a-steach feadhainn falaichte, agus cha bhith e a’ fàiligeadh le milleanan de fhaidhlichean no gun fhaidhlichean idir.

Post-d gu caraid

vmspike mholainn dreach àithne le toradh coltach ris:

cp -a -T /source /target

Oz_Alex

cp -aT /source /target

NOTA: cùis litir T tha an ciall. Ma mheasgaicheas tu e, gheibh thu sgudal iomlan: atharraichidh an stiùireadh copaidh.
Buidheachas:

  • Companaidhean RUVDS.COM airson taic agus an cothrom foillseachadh air do bhlog air Habré.
  • A rèir dealbh Bun-bheachd Trì-fillte. Tha an dealbh gu math mòr agus mionaideach, faodar fhosgladh ann an uinneag air leth.

PS Feuch an cuir thu mearachdan sam bith a mhothaich thu ann am brath prìobhaideach. Bidh mi ag àrdachadh mo karma airson seo.

cp command: dèan lethbhreac de phasganan faidhle gu ceart gu * nix

Source: www.habr.com

Cuir beachd ann