मैं cp
कमांड का उपयोग करने और एक अधिलेखित करने के लिए मजबूर कर रहा हूं ।
मैंने कोशिश की है cp -rf /foo/* /bar
, लेकिन मुझे अभी भी प्रत्येक ओवरराइट की पुष्टि करने के लिए प्रेरित किया जाता है।
मैं cp
कमांड का उपयोग करने और एक अधिलेखित करने के लिए मजबूर कर रहा हूं ।
मैंने कोशिश की है cp -rf /foo/* /bar
, लेकिन मुझे अभी भी प्रत्येक ओवरराइट की पुष्टि करने के लिए प्रेरित किया जाता है।
जवाबों:
आप कर सकते हैं yes | cp -rf xxx yyy
, लेकिन मेरी गुफ्तगू यह कहती है कि यदि आप इसे रूट के रूप में करते हैं - आपके पास .bashrc
या .profile
इसका एक उपनाम cp
है cp -i
, तो अधिकांश आधुनिक सिस्टम (मुख्य रूप से आरएच-डेरिवेटिव) प्रोफाइल को रूट करने के लिए करते हैं।
आप मौजूदा alias
प्रॉम्प्ट पर कमांड प्रॉम्प्ट पर which cp
चलकर या केवल एलियास की जांच कर सकते हैं cp
।
यदि आपके पास कोई अन्य परिभाषित नहीं है, unalias cp
तो चालू सत्र के लिए यह समाप्त हो जाएगा, अन्यथा आप इसे केवल अपने शेल प्रोफ़ाइल से हटा सकते हैं।
आप अस्थायी रूप से एक उपनाम को बायपास कर सकते हैं और एक कमांड के गैर-अलियास संस्करण का उपयोग करके इसे उपसर्ग कर सकते हैं \
, जैसे\cp whatever
¯\_(ツ)_/¯
बारे में हूँ ।
(primarily RH-derivatives)
टिप्पणी जोड़ी :)
unalias cp
जो कुछ भी आपको कॉपी करने की आवश्यकता है, उसे करने और कॉपी करने के बाद , आप अपने डिफ़ॉल्ट रूप से उपनाम को सेट कर सकते हैं alias cp='cp -i'
। जिसके बाद, इसे चलाएं alias cp
ताकि आप पुष्टि कर सकें कि यह डिफ़ॉल्ट रूप से उपनाम के लिए वापस आ गया है।
यह संभवत: cp
पहले से ही किसी चीज की तरह एलियास होने के कारण होता है cp -i
। कॉलिंग cp
सीधे काम करना चाहिए:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
इसका उपयोग करने का एक और तरीका yes
कमांड का उपयोग करना है :
yes | cp -rf /zzz/zzz/* /xxx/xxx
yes
कमांड प्रदान करता है । प्रफुल्लित। और किसी दिन मैं इसका इस्तेमाल कर सकता हूं।
के रूप में अन्य उत्तर में से कुछ कहा है, तो आप शायद एक उपनाम कहीं जो नक्शे का उपयोग cp
करने के लिए cp -i
या कुछ इसी तरह। आप बैकलैश के साथ इसे पूर्ववर्ती किसी उपनाम के बिना एक कमांड चला सकते हैं। अपने मामले में, प्रयास करें
\cp -r /zzz/zzz/* /xxx/xxx
बैकस्लैश आपके द्वारा बुलाए गए किसी भी उपनाम को अस्थायी रूप से अक्षम कर देगा cp
।
cp
, उपनाम को लागू करने के बजाय , \cp
कमांड को लागू करेगा cp
। यह चलने के बराबर प्रतीत होता है command cp
।
आपके पास संभवतः कहीं एक उपनाम है, मानचित्रण cp
करने के लिए cp -i
; क्योंकि डिफ़ॉल्ट सेटिंग्स के साथ, cp
अधिलेखित करने के लिए नहीं कहेंगे। अपनी .bashrc
, अपनी .profile
आदि की जाँच करें ।
Cp मैनपेज देखें : केवल जब -i
पैरामीटर निर्दिष्ट किया जाता है तो cp
वास्तव में ओवरराइटिंग से पहले संकेत मिलेगा ।
आप इसे alias
कमांड के माध्यम से देख सकते हैं :
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
उपनाम को अपरिभाषित करने के लिए, उपयोग करें:
$ unalias cp
जैसा कि अन्य जवाबों में कहा गया है, यदि cp
यह किसी अन्य व्यक्ति का है तो यह खुश हो सकता है cp -i
।
आप उपनाम के बिना इसका उपयोग करने \
से पहले cp
कमांड को जोड़ सकते हैं ।
\cp -fR source target
डिफ़ॉल्ट रूप 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
cp
आमतौर पर इस तरह से अलियास किया जाता है
alias cp='cp -i' # i.e. ask questions of overwriting
यदि आप सुनिश्चित हैं कि आप ओवरराइट करना चाहते हैं तो इसका उपयोग करें:
/bin/cp <arguments here> src dest
मुझे मिला
'cp' -rf * /data/danalonso_testing/target/
स्रोत: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
इसलिए मैं इसमें बहुत भागता हूं क्योंकि मैं cp को अलियास रखता हूं cp -iv
, और मुझे एक नीरस चाल मिली। यह पता चला है कि जबकि -i
और -n
दोनों पिछले ओवरराइट निर्देशों को रद्द करते हैं , -f
नहीं। हालाँकि, यदि आप इसका उपयोग -nf
करते हैं , तो इसे साफ़ करने की क्षमता बढ़ जाती है -i
। इसलिए:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
बहुत साफ है ना? / necropost
cp -u ...
cp --update ...
भी काम करता है।
अलियास के बिना कमांड को कॉल करने का दूसरा तरीका है command
बेसिन में बैश का उपयोग करना ।
command cp -rf /zzz/zzz/*
-n "ओवरराइट करने के लिए नहीं" है, लेकिन उसका प्रश्न इसके विपरीत है जो आपने उत्तर दिया था।
इस पुष्टि से बचने के लिए आप बस cp कमांड wiht निरपेक्ष पथ को चला सकते हैं, यह उपनाम से बच जाएगा।
/ बिन / सीपी सोर्सफाइल गंतव्य
यदि आप वैश्विक स्तर पर उर्फ को रखना चाहते हैं और अपनी स्क्रिप्ट के लिए बदलना चाहते हैं।
महज प्रयोग करें:
alias cp = cp
और फिर अपने अनुवर्ती आदेश लिखें।
मैंने बस "cp -i" उर्फ को हटाने के लिए यूनीलैस का इस्तेमाल किया, फिर कॉपी किया, फिर उर्फ को वापस सेट किया। :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
सबसे सुंदर कोड नहीं, लेकिन सेट करना आसान और कुशल है। मैं यह भी जाँचता हूं कि उपनाम पहले से ही एक साधारण के साथ वापस सेट है
alias |grep cp
यह नहीं है cp -i
। यदि आप पुष्टि के लिए नहीं पूछना चाहते हैं, तो यह है cp -n
; उदाहरण के लिए:
cp -n src dest
या निर्देशिका / फ़ोल्डर के मामले में है:
cp -nr src_dir dest_dir
cp -i
सिस्टम द्वारा उपयोगकर्ता-सामना करने वाले cp को सहानुभूति दी गई थी, जिसका अर्थ है कि वे डिफ़ॉल्ट को दूर करने और एक अधिलेखित करने के लिए बाध्य कर रहे थे । ऐसा लगता है कि आप भ्रमित हो सकते हैं कि सुझाए गए वाक्यविन्यास के लिए, लेकिन एक ओवरराइट -n
को रोक देगा।