cp အမိန့်- ဖိုင်ဖိုင်တွဲများကို *nix သို့ မှန်ကန်စွာ ကူးယူပါ။

cp အမိန့်- ဖိုင်ဖိုင်တွဲများကို *nix သို့ မှန်ကန်စွာ ကူးယူပါ။

ဤဆောင်းပါးတွင် အသုံးပြုခြင်းနှင့် ပတ်သက်သော ထင်ရှားသောမဟုတ်သော အရာအချို့ကို ဖော်ပြပါမည်။ သင်္ကေတများ ကူးယူသည့်အခါ၊ ရှုပ်ထွေးသော command အပြုအမူ cp ကူးယူသည့်အခါ၊ ဖိုင်အများအပြားကို ကျော်သွားခြင်း သို့မဟုတ် ပျက်စီးခြင်းမရှိဘဲ မှန်ကန်စွာ ကူးယူနိုင်စေမည့် နည်းလမ်းများ။

/source folder မှ အားလုံးကို /target folder သို့ ကူးယူရန် လိုအပ်သည်ဆိုပါစို့။

ပထမဆုံး သတိရမိတာကတော့-

cp /source/* /target

ဒီအမိန့်ကို ချက်ချင်းပြင်ရအောင်-

cp -a /source/* /target

သော့ -a ရည်ညွှန်းချက်များ၊ လုပ်ပိုင်ခွင့်များအားလုံးကို ကူးယူကာ ထပ်လောင်းထည့်ပါမည်။ တိကျသောအခွင့်အရေးမျိုးပွားရန်မလိုအပ်သောအခါ၊ သော့တစ်ခုလုံလောက်သည်။ -r.

ကူးယူပြီးနောက်၊ ဖိုင်အားလုံးကို ကူးယူထားခြင်းမဟုတ်ကြောင်း တွေ့ရှိရမည် - ကဲ့သို့သော အစက်ဖြင့်အစပြုသော ဖိုင်များ-

.profile
.local
.mc

ကြိုက်တယ်။

ဘာကြောင့် ဒီလိုဖြစ်သွားတာလဲ။

သင်္ကေတများကို အခွံဖြင့် လုပ်ဆောင်သောကြောင့် (bash သာမန်ကိစ္စတွင်)။ မူရင်းအားဖြင့်၊ bash သည် ၎င်းတို့အား ဝှက်ထားသည်ဟု မှတ်ယူသောကြောင့် အစက်များဖြင့် စတင်သော ဖိုင်အားလုံးကို လျစ်လျူရှုပါမည်။ ဒီလိုအမူအကျင့်တွေကို ရှောင်ရှားဖို့အတွက် အမူအကျင့်တွေကို ပြောင်းလဲရပါမယ်။ bash command ကိုအသုံးပြု:

shopt -s dotglob

ပြန်လည်စတင်ပြီးနောက် ဤအပြုအမူပြောင်းလဲမှု ဆက်ရှိနေကြောင်း သေချာစေရန်၊ ဖိုင်တွဲတွင် ဤ command ဖြင့် wildcard.sh ဖိုင်ကို ဖန်တီးနိုင်သည်။ /etc/profile.d (သင့်ဖြန့်ဖြူးရေးတွင် မတူညီသောဖိုင်တွဲတစ်ခု ရှိကောင်းရှိနိုင်သည်)။

အရင်းအမြစ်လမ်းညွှန်တွင် ဖိုင်များမရှိပါက၊ shell သည် ခရေပွင့်အစား မည်သည့်အရာကိုမျှ အစားထိုးနိုင်မည် မဟုတ်ဘဲ ကော်ပီကူးခြင်းမှာလည်း အမှားအယွင်းရှိမည်ဖြစ်သည်။ ဒီအခြေအနေကို ဆန့်ကျင်ဖို့ ရွေးချယ်စရာတွေ ရှိတယ်။ failglob и nullglob. သတ်မှတ်ဖို့ လိုပါလိမ့်မယ်။ failglobအမိန့်ကို အကောင်အထည်ဖော်ခြင်းမှ တားဆီးပေးသည်။ nullglob ကိုက်ညီမှု မတွေ့ပါက စာလုံးအလွတ် (သုညအလျား) သို့ ပြောင်းပေးသောကြောင့် ၎င်းသည် အလုပ်မဖြစ်ပါ။ cp error ဖြစ်စေလိမ့်မယ်။

သို့သော်၊ ဖိုင်တွဲထဲတွင် ဖိုင်ထောင်ပေါင်းများစွာ သို့မဟုတ် ထို့ထက်ပိုပါက၊ ထို့နောက် wildcards ချဉ်းကပ်မှုကို လုံးလုံး စွန့်လွှတ်သင့်သည်။ အမှန်က အဲဒါ bash ခရင်မ်ကဒ်များကို အလွန်ရှည်လျားသော command line အဖြစ်သို့ ချဲ့ထွင်သည်-

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

command line ၏ အရှည်ပေါ်တွင် ကန့်သတ်ချက် ရှိသည်၊ ၎င်းမှာ command ကို အသုံးပြု၍ ရှာဖွေနိုင်သည်-

getconf ARG_MAX

bytes ဖြင့် command line ၏ အများဆုံး အရှည်ကို ကြည့်ကြပါစို့။

2097152

သို့မဟုတ်:

xargs --show-limits

ကျွန်ုပ်တို့သည် ကဲ့သို့သော အရာတစ်ခုကို ရရှိသည်-

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

ဒီတော့ ကာရန်ကဒ်တွေ လုံးဝမပါဘဲ လုပ်ကြည့်ရအောင်။

ရေးလိုက်ရအောင်

cp -a /source /target

ဤနေရာတွင် ကျွန်ုပ်တို့သည် မရေရာသော အပြုအမူများနှင့် ရင်ဆိုင်နေရသည်။ cp. /target ဖိုင်တွဲမရှိပါက၊ ကျွန်ုပ်တို့လိုအပ်သောအရာကို ရရှိပါမည်။

သို့သော်၊ ပစ်မှတ်ဖိုင်တွဲရှိနေပါက၊ ဖိုင်များကို /target/source ဖိုင်တွဲသို့ ကူးယူမည်ဖြစ်သည်။

ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့လိုအပ်သောဖိုင်များပါ၀င်ပြီး ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့၏ပန်းတိုင်မှာ /target မှဖိုင်များနှင့်အတူ /target တွင်ဖိုင်များကိုဖြည့်စွက်ရန်ဖြစ်သည်

အရင်းအမြစ်နှင့် ဦးတည်ရာ ဖိုင်တွဲများကို တူညီပါက၊ ဥပမာ၊ ကျွန်ုပ်တို့သည် /source မှ /home/source သို့ ကူးယူနေသည်၊ ထို့နောက် command ကို အသုံးပြုနိုင်ပါသည်။

cp -a /source /home

ကူးယူပြီးနောက်၊ /home/source ရှိဖိုင်များကို /source မှ ဖိုင်များဖြင့် ဖြည့်စွက်ပါမည်။

ဤသည်မှာ ယုတ္တိပြဿနာတစ်ခုဖြစ်သည်- အကယ်၍ ဖိုင်တွဲများကို တူညီသောအမည်ပေးမည်ဆိုပါက ဦးတည်ရာလမ်းကြောင်းတွင် ဖိုင်များထည့်နိုင်သော်လည်း ၎င်းတို့သည် ကွဲပြားပါက၊ အရင်းအမြစ်ဖိုင်တွဲကို ဦးတည်ရာအတွင်း၌ ထားရှိမည်ဖြစ်သည်။ သင်္ကေတများမပါဘဲ cp ကိုအသုံးပြု၍ /source မှ /target သို့ဖိုင်များကိုမည်သို့ကူးယူမည်နည်း။

ဤအန္တရာယ်ရှိသော ကန့်သတ်ချက်ကို ကျော်လွန်ရန်၊ ကျွန်ုပ်တို့သည် ထင်ရှားသော အဖြေမဟုတ်သော ဖြေရှင်းချက်ကို အသုံးပြုသည်-

cp -a /source/. /target

DOS နှင့် Linux နှင့် ရင်းနှီးသူများသည် အရာအားလုံးကို နားလည်ထားပြီးဖြစ်သည်- ဖိုင်တွဲတစ်ခုစီတွင် မမြင်နိုင်သောဖိုင်တွဲ "" 2 ခုရှိသည်။ နှင့် ".."၊ pseudo-folders များသည် လက်ရှိနှင့် ပိုမိုမြင့်မားသော လမ်းကြောင်းများသို့ လင့်ခ်များဖြစ်သည်။

  • ကူးယူလိုက်တာ cp ဖြစ်တည်မှုကို စစ်ဆေးပြီး /target/ ဖန်တီးရန် ကြိုးစားသည်။
  • ထိုသို့သောလမ်းညွှန်တစ်ခုရှိပြီး ၎င်းသည် /ပစ်မှတ်ဖြစ်သည်။
  • /source မှ ဖိုင်များကို /target သို့ မှန်ကန်စွာ ကူးယူပါသည်။

ထို့ကြောင့် သင်၏မှတ်ဉာဏ်ထဲတွင် သို့မဟုတ် နံရံတွင် ရဲရင့်သောဘောင်တစ်ခု၌ ချိတ်ဆွဲပါ။

cp -a /source/. /target

ဤအမိန့်တော်၏ အပြုအမူသည် ရှင်းပါသည်။ သင့်တွင် ဖိုင်တစ်သန်းရှိသည်ဖြစ်စေ မရှိသည်ဖြစ်စေ အရာအားလုံးသည် အမှားအယွင်းမရှိဘဲ လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။

တွေ့ရှိချက်များ

လိုအပ်ရင် ကူးယူပါ။ အားလုံး ဖိုင်တွဲတစ်ခုမှ အခြားဖိုင်များ၊ ကျွန်ုပ်တို့သည် wildcards များကို မသုံးပါ၊ ၎င်းအစား ၎င်းတို့ကို အသုံးပြုခြင်းက ပိုကောင်းပါတယ်။ cp အရင်းအမြစ်ဖိုင်တွဲ၏အဆုံးတွင် ကာလတစ်ခုနှင့် ပေါင်းစပ်ထားသည်။ ၎င်းသည် ဝှက်ထားသောဖိုင်များအပါအဝင် ဖိုင်အားလုံးကို ကူးယူမည်ဖြစ်ပြီး သန်းနှင့်ချီသော ဖိုင်များ သို့မဟုတ် ဖိုင်များ လုံးဝပျက်ကွက်မည်မဟုတ်ပါ။

afterword

vmspike အလားတူရလဒ်ဖြင့် command ဗားရှင်းကို အကြံပြုထားသည်-

cp -a -T /source /target

Oz_Alex

cp -aT /source /target

မှတ်ချက်- စာကိစ္စ T အဓိပ္ပါယ်ရှိသည်။ ရောမွှေလိုက်လျှင် အမှိုက်များ အပြည့်ရလိမ့်မည်- ကူးယူခြင်း ဦးတည်ချက် ပြောင်းသွားပါမည်။
ကျေးဇူး

  • ကုမ္ပဏီများ RUVDS.COM ပံ့ပိုးမှုနှင့် Habré ပေါ်ရှိ သင့်ဘလော့ဂ်တွင် ထုတ်ဝေခွင့်ရရှိရန်။
  • ပုံတစ်ပုံချင်းစီ Triple Concept ပါ။. ရုပ်ပုံသည် အလွန်ကြီးမားပြီး အသေးစိတ်ကျသည်၊ သီးခြားပြတင်းပေါက်တွင် ဖွင့်နိုင်သည်။

PS ကျေးဇူးပြု၍ ကိုယ်ရေးကိုယ်တာ မက်ဆေ့ချ်တွင် သင်သတိပြုမိသော အမှားအယွင်းများကို ပေးပို့ပါ။ ဤအတွက် ကျွန်ုပ်၏ ကုသိုလ်ကံကို တိုးပွားစေပါသည်။

cp အမိန့်- ဖိုင်ဖိုင်တွဲများကို *nix သို့ မှန်ကန်စွာ ကူးယူပါ။

source: www.habr.com

မှတ်ချက် Add