वर्तमान निर्देशिका के लिए कमांडलाइन शॉर्टकट होम निर्देशिका के लिए ~ के समान है?


24

जब मैं टर्मिनल विंडो में cp या मूव कमांड का उपयोग करता हूं, तो वर्तमान में मैं इस तरह के एक निश्चित फ़ोल्डर में बैश के साथ हूं।

NES@server:~/Desktop/dir1$

और अब मैं यहाँ से ~/anotherdir/dir2bash (dir1) में मौजूदा चुने हुए फोल्डर में एक फाइल कॉपी करना चाहता हूँ

cp ~/anotherdir/dir2/file ~/Desktop/dir1

वर्तमान चयनित निर्देशिका को संदर्भित करने के लिए एक शॉर्टकट स्ट्रिंग मौजूद है? ताकि इस उदाहरण में मुझे लक्ष्य डायर को पूरा रास्ता प्रदान न करना पड़े, लेकिन कमांड को पता है कि उसे वर्तमान चुनी हुई निर्देशिका का उपयोग बश में करना चाहिए? यानी के रूप में ~ घर निर्देशिका के लिए खड़ा है?

जवाबों:


42

आपका वर्तमान निर्देशिका है .। इसलिए, cp /foo/fam/foo .फ़ाइल को अपनी वर्तमान निर्देशिका में कॉपी कर लें।

"एक निर्देशिका ऊपर," या आपके वर्तमान कार्य निर्देशिका की मूल निर्देशिका के लिए अनुरूप निर्माण, दो बिंदु हैं, अर्थात ..। (साभार @djeikyb।)

तो, से /usr/house/firstfloor/basement, सीडी ..आपको एक स्तर तक ले जाता है /usr/house/firstfloor।

उसी उदाहरण में (शुरू से /usr/house/firstfloor/basement, कमांड cd ../..आपको ले जाएगा /usr/house।

तुम भी उपयोग कर सकते हैं $PWDके साथ echoअपने वर्तमान निर्देशिका पाने के लिए:

echo $PWD

संयोग से, $OLDPWDआप अपनी पिछली निर्देशिका देंगे। ( bashआप में से कौन टाइप करके भी पहुँच सकता है cd -।)


3
किसी भी समय सीखने के लिए अच्छा है कि ..इसका मतलब है कि एक निर्देशिका कम है। कई बार इस्तेमाल किया जा सकता है, यानीcd ../..
— djeikyb

1
@djeikyb - आपका मतलब ऊपर था, मुझे यकीन है। तो, सीडी ..आपको अपनी वर्तमान निर्देशिका के मूल निर्देशिका में ले जाएगा। अच्छी बात।
— बेलाक्वा

1
और मैं उल्लेख करूंगा popdऔर pushdवह एक निबंध में बदल जाएगा।
— बेलाक्वा

2
याद रखने के लिए एक छोटा सा अंतर: .और ..फाइलसिस्टम-स्तर हैं, इसलिए कोई भी कार्यक्रम उन्हें स्वीकार करेगा। दूसरी ओर, शॉर्टकट जैसे कि ~और ~-शेल का हिस्सा हैं।
— ११'११

2
+1 के लिए cd -; पता नहीं यह अस्तित्व में था।
— jg-faustus

6

आप $ (pwd) का उपयोग कर सकते हैं, यह pwd कमांड से आउटपुट में हल होगा।

उदाहरण:

echo $(pwd)

1
या बस echo $PWD।
— ulidtko

3

./ वर्तमान निर्देशिका का प्रतिनिधित्व करता है। तो आप कमांड का उपयोग कर सकते हैं cp ~/anotherdir/dir2/file ./यह फ़ाइल "फ़ाइल" को सही कार्यशील निर्देशिका में कॉपी करेगा।


3
आपको स्लैश की आवश्यकता नहीं है, "।" काफी है। स्लैश (पथ घटक सीमांकक के रूप में) केवल तभी आवश्यक है जब आप इसके बाद कुछ अन्य पथ घटक रखना चाहते हैं, लेकिन फिर इसे बस छोड़ देना है ।/ चूंकि सापेक्ष पथ वैसे भी वर्तमान निर्देशिका से शुरू हो रहे हैं :)
— LGB

मुझे पता है / की आवश्यकता नहीं है लेकिन अकेले मुझे भ्रमित लगता है coz। वर्तमान शेल में फ़ाइल से कमांड निष्पादित करने के लिए भी प्रयोग किया जाता है जैसे "। envsetup.sh"। इसलिए / a को अंत में जोड़ने से यह स्पष्ट हो जाता है।
— बीएनडब्ल्यू

1
तात्कालिक रूप से, यदि आप ln -s /some/long/path/to/get/to/cake कोई दूसरा तर्क नहीं करते हैं, तो यह cakeसीधे आपके वर्तमान में प्रतीकात्मक लिंक को डाल देगा । आलसी के लिए बहुत अच्छा है। बचाता है ए .।
— बेलाक्वा

2

वर्तमान निर्देशिका का उपयोग करने के लिए गंतव्य निर्देशिका किसी एकल बिंदु ' .' का उपयोग करें

लंबा जवाब

अपने उदाहरण का उपयोग कर आप टाइप करेंगे: cp ~/anotherdir/dir2/file .

कार्रवाई में डॉट ., ..और ../../निर्देशिका नामों को देखने के लिए , अपने टर्मिनल में निम्न आदेशों को कॉपी और पेस्ट करें:

mkdir a && mkdir a/b && mkdir a/b/c && mkdir a/b/c2
cd a/b/c
cp /etc/default/grub .
cp /etc/default/grub ..
cp /etc/default/grub ../c2
cd ../../
tree

ट्री कमांड से आउटपुट इस तरह दिखाई देता है:

.
└── b
    ├── c
    │   └── grub
    ├── c2
    │   └── grub
    └── grub

3 directories, 3 files

.पेड़ उत्पादन के शीर्ष पर नई वर्तमान निर्देशिका का प्रतिनिधित्व करता है a जो दादा-दादी की है a/b/cजो हम प्रयोग पर नेविगेट cd ../../आदेश। नीचे aहम उप-निर्देशिकाओं को देखते हैं a/b, a/b/cऔरa/b/c2

लाइन विश्लेषण द्वारा लाइन

पहले हमने एक &&साथ कई लाइनों को जोड़ने के लिए एक लाइन पर 4 डायरेक्टरी बनाई ।

फिर हम उस निर्देशिका में बदल गए a/b/c, जो निम्नलिखित प्रतिलिपि कमांड के लिए वर्तमान निर्देशिका है:

  • पहली प्रतिलिपि कमांड ( cp) में हम गंतव्य को अपनी वर्तमान निर्देशिका ( सी ) के साथ सेट करते हैं .।
  • दूसरी प्रतिलिपि कमांड में हमने गंतव्य निर्देशिका ( b ) के साथ गंतव्य सेट किया ..।
  • तीसरी कॉपी कमांड में हमने गंतव्य स्थल को सिबलिंग डायरेक्टरी ( c2 ) के साथ सेट किया../c2

फिर, जैसा कि पहले कहा गया था, हमने वर्तमान निर्देशिका को बदल दिया aऔर treeसभी निर्देशिकाओं और फाइलों को प्रदर्शित करने के लिए कमांड को चलाया a।

साफ - सफाई

हमारे किए जाने के बाद, हम तीन निर्देशिकाओं और फ़ाइलों को हटा देते हैं:

cd ~/
rm -r tree


1

आप वर्तमान कार्य निर्देशिका (CWD) का प्रतिनिधित्व करने के लिए डॉट ( .), ~+ टिल्ड विस्तार , pwdकमांड या $ PWD चर का उपयोग कर सकते हैं । ये सभी आदेश यह कर सकते हैं:

  1. mv file_old_dir .
  2. mv file_old_dir ~+
  3. mv file_old_dir $(pwd)
  4. mv file_old_dir $PWD

0

हां (जैसा कि अन्य ने उल्लेख किया है), वर्तमान निर्देशिका "है।", इसीलिए आप वर्तमान निर्देशिका से प्रोग्राम / स्क्रिप्ट शुरू कर सकते हैं ।/cript (बस स्क्रिप्ट तब तक काम नहीं करेगी, जब तक PATH का हिस्सा नहीं है, जिसे अनुशंसित नहीं किया गया है। हालांकि)। $ PWD या $ (pwd) का उपयोग करना थोड़ा ओवरकिल है, भले ही दूसरों ने उल्लेख किया हो कि, एकल डॉट वर्ण का उपयोग करना छोटा है, निश्चित रूप से :) ".." मूल निर्देशिका है, निश्चित रूप से "/" जड़ है। यह उल्लेख करने के लिए भी अच्छा है कि "सीडी -" आपको पिछली निर्देशिका में डाल देगा जहां आप सीडब्ल्यूडी (वर्तमान कामकाजी निर्देशिका) को बदलने से पहले थे। यह दैनिक कार्य में भी उपयोगी हो सकता है। कमांड लाइन में किसी अन्य के बिना एक एकल "सीडी" कमांड आपको "~" (आपके घर) में डाल देगा।


1
$PWDपूर्ण रास्तों के प्रति सहानुभूति पैदा करते समय एक ओवरकिल नहीं है।
— ulidtko

मैंने "cp" उदाहरण के बारे में सोचा कि यह कहाँ है, निश्चित रूप से। सहानुभूति के साथ भी यह स्थिति पर निर्भर करता है: "ln -s / this / file।" वर्तमान निर्देशिका फ़ाइल / इस / फ़ाइल में नाम "फ़ाइल" के साथ एक सिमलिंक बनाएगा (लोग अक्सर सोचते हैं कि यह "cp" जैसा है न कि केवल डेटा कॉपी करें, केवल कुछ प्रकार की लिंक: यह एक सही परिभाषा नहीं है, लेकिन यह एक अच्छी शुरुआत है )। हालांकि, विपरीत निर्माण: "ln -s। / यह / dir" कुछ हद तक दिलचस्प है (वर्तमान निर्देशिका के लिए संदर्भित के साथ / इस / dir के रूप में एक सिमलिंक बनाएं), लेकिन मुझे लगता है कि यह मूल विषय के दायरे से बाहर है, और यह सवाल भी नहीं था।
— एलजीबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.