पुष्टि के बिना cp को अधिलेखित करने के लिए कैसे बाध्य करें


666

मैं cpकमांड का उपयोग करने और एक अधिलेखित करने के लिए मजबूर कर रहा हूं ।

मैंने कोशिश की है cp -rf /foo/* /bar, लेकिन मुझे अभी भी प्रत्येक ओवरराइट की पुष्टि करने के लिए प्रेरित किया जाता है।

जवाबों:


1111

आप कर सकते हैं yes | cp -rf xxx yyy, लेकिन मेरी गुफ्तगू यह कहती है कि यदि आप इसे रूट के रूप में करते हैं - आपके पास .bashrcया .profileइसका एक उपनाम cpहै cp -i, तो अधिकांश आधुनिक सिस्टम (मुख्य रूप से आरएच-डेरिवेटिव) प्रोफाइल को रूट करने के लिए करते हैं।

आप मौजूदा aliasप्रॉम्प्ट पर कमांड प्रॉम्प्ट पर which cpचलकर या केवल एलियास की जांच कर सकते हैं cp

यदि आपके पास कोई अन्य परिभाषित नहीं है, unalias cpतो चालू सत्र के लिए यह समाप्त हो जाएगा, अन्यथा आप इसे केवल अपने शेल प्रोफ़ाइल से हटा सकते हैं।

आप अस्थायी रूप से एक उपनाम को बायपास कर सकते हैं और एक कमांड के गैर-अलियास संस्करण का उपयोग करके इसे उपसर्ग कर सकते हैं \, जैसे\cp whatever


3
इसके अलावा, सावधान रहना - भले ही उर्फ सीधे, .bashrc में लिखा नहीं है, तो कुछ भी बाकी जो सीपी के लिए उर्फ manipulates कुछ और बुला अप इस फाइल को कॉल समाप्त हो जाती है, तो आप इस व्यवहार में चलेंगे।
जॉन

4
"आधुनिक सिस्टम" से उनका मतलब है RHEL / सेंटो / फेडोरा और शायद कुछ और, डेबियन / उबंटू उर्फ ​​सीपी नहीं है। मैं सर्वर पर आरएचईएल को पसंद करता हूं और लगभग एक दशक तक फेडोरा का उपयोग किया, लेकिन उबंटू के सामुदायिक समर्थन और ग्नोम में वापस स्विच करने के बाद एनवीडिया ने मेरे फेडोरा इंस्टॉल को मार दिया। मैं इसके ¯\_(ツ)_/¯बारे में हूँ ।
रे फॉस

2
@RayFoss ने एक (primarily RH-derivatives)टिप्पणी जोड़ी :)
उपराष्ट्रपति

unalias cpजो कुछ भी आपको कॉपी करने की आवश्यकता है, उसे करने और कॉपी करने के बाद , आप अपने डिफ़ॉल्ट रूप से उपनाम को सेट कर सकते हैं alias cp='cp -i'। जिसके बाद, इसे चलाएं alias cpताकि आप पुष्टि कर सकें कि यह डिफ़ॉल्ट रूप से उपनाम के लिए वापस आ गया है।
jaxarroyo

287

यह संभवत: cpपहले से ही किसी चीज की तरह एलियास होने के कारण होता है cp -i। कॉलिंग cpसीधे काम करना चाहिए:

/bin/cp -rf /zzz/zzz/* /xxx/xxx

इसका उपयोग करने का एक और तरीका yesकमांड का उपयोग करना है :

yes | cp -rf /zzz/zzz/* /xxx/xxx

6
हां, मैंने आलियास सीपी-आई, अब इसका काम किया है .. आपके बहुमूल्य उत्तर के लिए धन्यवाद।
thiyagu114

5
मुझे पसंद है कि यूनिक्स yesकमांड प्रदान करता है । प्रफुल्लित। और किसी दिन मैं इसका इस्तेमाल कर सकता हूं।
मैथ्यू लेयांग

3
हाँ यह उर्फ ​​था, अच्छा पकड़ :) आप मूल cp को कॉल करने के लिए \ cp का उपयोग कर सकते हैं, पथ / बिन / cp को याद करने की तुलना में आसान है
ह्यूगो ज़ारागोज़ा

हां, यह उपनाम को बायपास करने का एक और तरीका है। एक साफ हैक की तरह!
PGL

1
यह तरीका अधिक सुरक्षित है।
प्लसमंचन

115

के रूप में अन्य उत्तर में से कुछ कहा है, तो आप शायद एक उपनाम कहीं जो नक्शे का उपयोग cpकरने के लिए cp -iया कुछ इसी तरह। आप बैकलैश के साथ इसे पूर्ववर्ती किसी उपनाम के बिना एक कमांड चला सकते हैं। अपने मामले में, प्रयास करें

\cp -r /zzz/zzz/* /xxx/xxx

बैकस्लैश आपके द्वारा बुलाए गए किसी भी उपनाम को अस्थायी रूप से अक्षम कर देगा cp


2
@ झोउजी, मेरे जवाब में कहा गया, उल्टा उपनाम को निष्क्रिय कर देता है। इसलिए cp, उपनाम को लागू करने के बजाय , \cpकमांड को लागू करेगा cp। यह चलने के बराबर प्रतीत होता है command cp
क्रिस

66

आपके पास संभवतः कहीं एक उपनाम है, मानचित्रण cpकरने के लिए cp -i; क्योंकि डिफ़ॉल्ट सेटिंग्स के साथ, cpअधिलेखित करने के लिए नहीं कहेंगे। अपनी .bashrc, अपनी .profileआदि की जाँच करें ।

Cp मैनपेज देखें : केवल जब -iपैरामीटर निर्दिष्ट किया जाता है तो cpवास्तव में ओवरराइटिंग से पहले संकेत मिलेगा ।

आप इसे aliasकमांड के माध्यम से देख सकते हैं :

$ alias
alias cp='cp -i'
alias diff='diff -u'
....

उपनाम को अपरिभाषित करने के लिए, उपयोग करें:

$ unalias cp

हां, मैंने आलियास सीपी-आई, अब इसका काम किया है .. आपके बहुमूल्य उत्तर के लिए धन्यवाद।
thiyagu114

1
यह सिर्फ "अनलियास cp" है
परेरा

49

जैसा कि अन्य जवाबों में कहा गया है, यदि cpयह किसी अन्य व्यक्ति का है तो यह खुश हो सकता है cp -i

आप उपनाम के बिना इसका उपयोग करने \से पहले cpकमांड को जोड़ सकते हैं ।

\cp -fR source target

1
जैसा कि आपने कहा, दूसरों ने पहले ही यह कहा है। यह 45 अपवित्र क्यों मिले?
14:29

@ phil294 मुझे लगता है कि उपनाम बदलने या cp उपनाम को हटाने के बिना यह सबसे आसान तरीका है जो अन्य उपयोगों के लिए उपयोगी हो सकता है। `` यह यहाँ बहुत उपयोगी है।
अर्नोल्ड रोआ

18

डिफ़ॉल्ट रूप cpसे एलियास है cp -i। आप इसे aliasदेख सकते हैं , टाइप करें और आप कुछ इस तरह देख सकते हैं:

alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

इस समस्या को हल करने के लिए /bin/cp /from /toइसके बजाय केवल कमांड का उपयोग करेंcp /from /to


9

आप इस आदेश का उपयोग कर सकते हैं:

cp -ru /zzz/zzz/* /xxx/xxx

हालाँकि यह आपकी मौजूदा फ़ाइल को नए के साथ अपडेट करेगा।


8

cp आमतौर पर इस तरह से अलियास किया जाता है

alias cp='cp -i'   # i.e. ask questions of overwriting

यदि आप सुनिश्चित हैं कि आप ओवरराइट करना चाहते हैं तो इसका उपयोग करें:

/bin/cp <arguments here> src dest


7

इसलिए मैं इसमें बहुत भागता हूं क्योंकि मैं cp को अलियास रखता हूं cp -iv, और मुझे एक नीरस चाल मिली। यह पता चला है कि जबकि -iऔर -nदोनों पिछले ओवरराइट निर्देशों को रद्द करते हैं , -fनहीं। हालाँकि, यदि आप इसका उपयोग -nfकरते हैं , तो इसे साफ़ करने की क्षमता बढ़ जाती है -i। इसलिए:

cp -f /foo/* /bar  <-- Prompt
cp -nf /foo/* /bar <-- No Prompt

बहुत साफ है ना? / necropost



5

अलियास के बिना कमांड को कॉल करने का दूसरा तरीका है commandबेसिन में बैश का उपयोग करना ।

command cp -rf /zzz/zzz/*


4

-n "ओवरराइट करने के लिए नहीं" है, लेकिन उसका प्रश्न इसके विपरीत है जो आपने उत्तर दिया था।

इस पुष्टि से बचने के लिए आप बस cp कमांड wiht निरपेक्ष पथ को चला सकते हैं, यह उपनाम से बच जाएगा।

/ बिन / सीपी सोर्सफाइल गंतव्य


2

यदि आप वैश्विक स्तर पर उर्फ ​​को रखना चाहते हैं और अपनी स्क्रिप्ट के लिए बदलना चाहते हैं।

महज प्रयोग करें:

alias cp = cp

और फिर अपने अनुवर्ती आदेश लिखें।


0

मैंने बस "cp -i" उर्फ ​​को हटाने के लिए यूनीलैस का इस्तेमाल किया, फिर कॉपी किया, फिर उर्फ ​​को वापस सेट किया। :

unalias cp  
cp -f foo foo.copy  
alias cp="cp -i"  

सबसे सुंदर कोड नहीं, लेकिन सेट करना आसान और कुशल है। मैं यह भी जाँचता हूं कि उपनाम पहले से ही एक साधारण के साथ वापस सेट है

alias |grep cp

-2

यह नहीं है cp -i। यदि आप पुष्टि के लिए नहीं पूछना चाहते हैं, तो यह है cp -n; उदाहरण के लिए:

cp -n src dest

या निर्देशिका / फ़ोल्डर के मामले में है:

cp -nr src_dir dest_dir

2
अन्य लोग कह रहे थे कि cp -iसिस्टम द्वारा उपयोगकर्ता-सामना करने वाले cp को सहानुभूति दी गई थी, जिसका अर्थ है कि वे डिफ़ॉल्ट को दूर करने और एक अधिलेखित करने के लिए बाध्य कर रहे थे । ऐसा लगता है कि आप भ्रमित हो सकते हैं कि सुझाए गए वाक्यविन्यास के लिए, लेकिन एक ओवरराइट -nको रोक देगा।
गाड़ी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.