शेल कमांड पर निर्देशिका नाम के बाद स्लैश (/)


14

मेरा यहां थोड़ा सवाल है।

मैं दो फ़ाइलें हैं, तो कहते हैं fileaऔर fileb, mv filea filebहोगा

  • हटाना fileb
  • का नाम बदल fileaदियाfileb

तो अगर मैं दो निर्देशिका है, का कहना है कि diraऔर dirb, mv dira dirbहोगा

  • ले जाने के diraमें dirb(यह हो जाएगा dirb/dira)

यह देखते हुए कि दोनों मामलों में कोई नोटिस या संदेश नहीं है, तो यह मेरे लिए बहुत असंगत है। मुझे लगता है कि mv dira dirbसिर्फ (या एक निर्देशिका नाम के तहत दो निर्देशिकाओं को मर्ज करने ) dirbकी सामग्री के साथ ओवरराइट करना चाहिए ।diradirb

मुझे याद है कि कहीं भी एक स्लैश (जैसे dira/) के साथ एक डाइरेक्टरी नाम को डाइरेक्टरी की तरह माना जाता है, और बिना स्लैश के नाम के साथ (जैसे dira) एक फाइल की तरह व्यवहार किया जाता है (निश्चित रूप से, कुछ निश्चित रूप से)। वैसे भी अब मैं खोल (zsh और संभवतः बैश) को एक स्लैश का उपयोग करके एक निर्देशिका के मेरे अंकन का सम्मान करना चाहता हूं। क्या कोई टर्मिनल विकल्प है जो मुझे इसे लागू करने में सक्षम बनाता है?

स्पष्ट करने के लिए, यहाँ मेरा वांछित व्यवहार है:

  • mv dira dirbdirbकी सामग्री के साथ अधिलेखित होने के परिणामस्वरूपdira
  • mv dira dirb/( ) में diraले जाया जा रहा में परिणामdirbdirb/dira

क्या किसी ने मेरे जैसा ही सोचा है? या मैं सिर्फ अजीब हूँ?


2
मुझे लगता है कि आपका वांछित व्यवहार खतरनाक होगा।
Starblue

@starblue: हाँ मैं मानता हूँ कि यह खतरनाक है, लेकिन मैं असंगतता के बजाय कुछ खतरनाक के साथ
रहूँगा

जवाबों:


11

हां, यह थोड़ा असंगत है, यहां तक ​​कि GNU टूल्स के भीतर भी।

आपके प्रस्ताव के साथ एक समस्या यह है कि गैर-रिक्त निर्देशिका को हटाया नहीं जा सकता है। इसके अलावा, -T(GNU भूमि में, वैसे भी) आप क्या चाहते हैं (पहला मामला):

$ ls dira/ dirb/
dira/:
a

dirb/:
b
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
mv: cannot move `dira/' to `dirb/': Directory not empty
$ rm dirb/b 
$ mv -iT dira/ dirb/
mv: overwrite `dirb/'? y
$ ls dira/ dirb/
ls: cannot access dira/: No such file or directory
dirb/:
a

आप एक उपनाम भी जोड़ सकते हैं, उदाहरण के लिए alias ren=mv -T
मिकेल

0

यदि आप बस डायरा से सब कुछ स्थानांतरित करना चाहते हैं तो आप चला सकते हैं mv dira/* dirb

मेरे HP-UX पर mv मैन पेज के अनुसार।

The mv command moves:

+ One or more directory subtrees (directory1, [directory2, ...]) to a new or existing directory (dest-directory).


3
आपकी कमांड सभी dotfiles को याद करेगी।
क्यूबी

वैसे भी डॉट फाइल की आवश्यकता किसे है;)
रॉबर्ट मासैओली

1
और अगर यह एक समस्या है, तो में इसे shopt -s dotglobठीक कर देंगे।
डेविड जेड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.