आप बिना नाम टाइप किए पहले उपलब्ध फ़ोल्डर में सीडी कैसे डाल सकते हैं?


30

मैं हाल ही में एक विधेय में था जहां मैं एक फ़ोल्डर के अंदर था, और मैं cdएक उप निर्देशिका फ़ोल्डर में जाना चाहता था । इस फ़ोल्डर के अंदर केवल एक फ़ोल्डर था, और यह वास्तव में एक लंबा नाम था।

Home (I am here)
 |
 |
  --> /reallylongnamefolder

क्या टाइप करने के बजाय उस फ़ोल्डर में जाने का कोई तरीका है:

 cd reallylongnamefolder

1
कई तरीके: cd */या cd rea*/यदि अनिश्चित है तो हर समय केवल 1 उपनिरी है (यदि बैश का उपयोग कर रहे हैं, तो आप cd rea[TAB]अन्य गोले में भी कर सकते हैं लेकिन नाम के विस्तार का तरीका भिन्न हो सकता है)। यदि "/ रियलीग्लोनफॉल्डर" एक पूर्ण मार्ग है, तो वही, लेकिन सामने '/' के साथ, पूर्व के लिए:cd /rea*/
ओलिवियर दुलक

जवाबों:


38

मैं सलाह दूंगा कि पहले कुछ अक्षर टाइप करें और दबाएं tab। बैश में स्वतः पूर्ण विशेषता है जो वास्तव में उपयोगी है। यदि यह वर्तमान पथ में केवल निर्देशिका है तो दबाने tabसे पूरी निर्देशिका भर जाएगी।

दो बार टाइप करने cdऔर दबाने tabपर वर्तमान निर्देशिका में सभी विकल्प प्रदर्शित होंगे।

tab आम तौर पर बाश में वास्तव में उपयोगी है क्योंकि आपके पास एक या दो कुंजीपट पर लगभग सभी निष्पादन योग्य हैं।

cd *जैसा कि ऊपर बताया गया है, केवल तभी काम करता है जब निर्देशिका पहले सूची में हो और छिपी न हो। यदि आपकी निर्देशिका से पहले वर्णानुक्रम में फ़ाइल है तो यह आपकी निर्देशिका cdको बिल्कुल भी नहीं बदलेगी।


15
अगर आपको सिर्फ एक निर्देशिका मौजूद है, तो आपको किसी भी अक्षर को टाइप करने की आवश्यकता नहीं है: cd <tab>पर्याप्त स्मार्ट होगा।
अमल्लॉउल

1
विंडोज में भी काम करता है। (गूगल से आने वाले लोगों के लिए ..)
कोरे तुगे

16

मुझे लगता है कि मैंने वास्तव में इसे वास्तव में समझ लिया है

cd * 
cd */

लेकिन अगर कई फाइलें और एक फ़ोल्डर हैं तो मैंने इसका परीक्षण नहीं किया है!


जैसा कि @Rinzwind ने टिप्पणियों में उल्लेख किया है!

मान लें कि आपके पास तीन लंबे फ़ोल्डर हैं:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

यदि आप फ़ाइल का पहला अक्षर टाइप करते हैं, तो tabयह फ़ाइल नाम को स्वतः पूर्ण कर देगा! क्रेजी स्टफ!

तो ऊपर दिए गए उदाहरण में, आप टाइप कर सकते हैं: t tabऔर यह अपने आप में उतना ही स्वत: पूर्ण होगा: cd thisislongfolder(फिर स्वयं संख्या लिखें)।

या आप कर सकते हैं cd t*1आप में ले जाएगाthisislongfolder1

शुक्रिया रिन्जविंड!


6
cd first_letter_or_some_letters और फिर {tab} सबसे आसान है (बहुत सारे फ़ोल्डर्स की आपकी समस्या का समाधान भी करता है। आप 1 से अधिक टैब और अक्षरों के साथ मिश्रित अक्षरों को भी कर सकते हैं। यह सिस्टम जहाँ तक हो सके ऑटो-कम्प्लीट कर सकता है। आप भी कर सकते हैं cd r*rऔर कर सकते हैं) आशा है कि यह आर के साथ शुरुआत और अंत करने वाला एकमात्र फ़ोल्डर है।
Rinzwind

@Rinzwind वाह! मुझे नहीं पता था कि! धन्यवाद!
एरियन फौरतोश

कोशिश करके देखो। अपने परिणामों को अपने उत्तर में जोड़ें और आपको शायद इसके लिए कुछ प्रतिष्ठा मिलेंगी ;-)
Rinzwind

4
cd */चाल कर सकते हैं
gniourf_gniourf

3
cd *शायद अधिक बार विफल होने से यह सफल होता है।
डेविड रिचरबी

14
cd $(ls -d */|head -n 1)

ls -d */निर्देशिकाओं को सूचीबद्ध करता है, head -n 1इस सूची में पहला स्थान देता है।


हाँ और आप टाइप करने जा रहे हैं ... मैं टैब-टैब पर जाऊँगा और इसे टाइप करने की तुलना में नाम देखूँगा। यह 100% सही है, हालांकि अच्छा जवाब!
tomsmeding

1
@tomsmeding यदि आप एक ऐसी स्क्रिप्ट लिख रहे हैं cd, जिसे पहली निर्देशिका की आवश्यकता है, तो आप टैब नहीं कर सकते।
pastebin.com 0mr8spkT

-n 1 फाइल के अंतिम 1 फाइल को दिखाता है। यदि आप इसे एक चर क्रम के लिए उपयोग करना चाहते हैं, तो आप किसी निर्देशिका में 4 डी फ़ोल्डर खोलने के लिए cd $ (ls -d -1 * / /। Sed -n '4p') का उपयोग कर सकते हैं। इसे उपनाम में जोड़ना आपको फ़ोल्डर नेविगेशन के साथ तेज़ बना सकता है।
इवान इवकोविच

2

मेरे पास इसके लिए एक अच्छा सेटअप है, यह न केवल मुझे ~ / somereallylongfoldername करने के लिए सीडी करने की अनुमति देता है, बल्कि जब मैं / फ़ोल्डर में हूँ, तब भी सीडी वहाँ

पहली चीज़ जो मैं उपयोग करता हूं, वह है ओश-माय-ज़ीश के साथ zsh, यह आपको केस के बारे में चिंता किए बिना या यहां तक ​​कि टाइपिंग सीडी के बिना भी सीडी की अनुमति देगा।

  1. git और zsh स्थापित करें
sudo apt-get install zsh git
  1. ओह माई ज़ेड स्थापित करें

कर्ल -L http://install.ohmyz.sh | श

  1. डिफ़ॉल्ट शेल को ZSH में बदलें
chsh -s /bin/zsh

अपने .zshrc को खोलें और संपादित करें जो आपके होम फोल्डर में स्थित है न कि यह छिपा हुआ है

नैनो ~ / .zshrc

फिर फ़ाइल के निचले भाग में निम्न पंक्ति जोड़ें export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

अगर आपको मेरी थीम पसंद है तो आप लाइन #ZSH_THEME="robbyrussell"को भी बदल सकते हैंZSH_THEME="pygmalion"

फ़ाइल को सहेजें और बंद करें फिर पुनरारंभ करें। खोल को बंद करें और खोल दें या बस एक नया टैब खोलें और इसे आज़माएँ

क्या आप नामों को पूरा करने के लिए टैब कुंजी का उपयोग नहीं कर सकते हैं और ZSH में भी आपको मामला दर्ज करने की आवश्यकता नहीं है, आप टैब टाइप कर सकते हैं और टैब दबा सकते हैं और इसे ~ / दस्तावेजों में बदल देंगे।

यहाँ छवि विवरण दर्ज करें


0

आप इनकोड संख्या द्वारा निर्देशिका बदल सकते हैं।
सबसे पहले हम इनोड को खोजते हैं ls -il
फिर

cd $(find -inum directory_inode_number)

0

यदि आपको इसे स्क्रिप्ट में करने या अयोग्य नामों के साथ निर्देशिकाओं का समर्थन करने की आवश्यकता है:

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

यह काम करता है अगर निर्देशिका में फ़ाइलें हैं, निर्देशिकाओं के सापेक्ष उनके क्रमबद्ध क्रम की परवाह किए बिना।
यह cd */विफल होने पर छिपी हुई निर्देशिकाओं के लिए काम करता है।
यह तब काम करता है जब नाम के बजाय lsकेवल मुद्रित होने पर वर्तमान स्थान में नाम का प्रतिनिधित्व करने योग्य नहीं है ??


0

इक्का के जवाब पर विस्तार:

cd $(ls -d -1 */ |sed -n '1p')

एक निर्देशिका में पहली फ़ोल्डर खोलने के लिए। दूसरी निर्देशिका के लिए '1p' को '2p' में बदला जा सकता है।

ls -d -1 -la */

मूल निर्देशिका से केवल निर्देशिकाओं को सूचीबद्ध करने के लिए।

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