जवाबों:
यहां एक दृष्टिकोण है जो थोड़ा कम टाइपिंग है, लेकिन आपको इसके साथ थोड़ा सावधान रहने की आवश्यकता है। इसमें !$
इतिहास का संदर्भ (जिसमें jcbermu भी इस्तेमाल किया गया है) शामिल है, जिसका अर्थ है सबसे हालिया कमांड का अंतिम शब्द। (यह अधिकांश गोले में उपलब्ध है: निश्चित रूप से bash
, csh
और tcsh
।) :h
एक अनुगामी फ़ाइल नाम घटक को हटाने के लिए संशोधक को लागू करें , केवल h ead को छोड़कर , और आपकी आज्ञा है cd !$:h
।
निम्नलिखित उदाहरणों में, बोल्ड टेक्स्ट वह है जो आप टाइप करते हैं:
~ $ vim /usr/share/drupal7/sites/all/modules/legacy/legacy.module (फ़ाइल संपादित करें) ~ $ cd! $: h सीडी / यूएसआर / शेयर / ड्रुपल 7 / साइट / सभी / मॉड्यूल / विरासत / usr / शेयर / drupal7 / साइटों / सभी / मॉड्यूल / विरासत $
यह एक बिंदु तक निर्देशिका नाम में रिक्त स्थान को संभाल सकता है:
~ $ vim / usr / share / drupal7 / साइट्स / सभी / मॉड्यूल / पुराने \ code / legacy.module (फ़ाइल संपादित करें) ~ $ cd! $: h सीडी / यूएसआर / शेयर / ड्रुपल 7 / साइटें / सभी / मॉड्यूल / पुराने \ कोड / usr / शेयर / drupal7 / साइटों / सभी / मॉड्यूल / पुराने कोड $
या
~ $ vim / usr / share / drupal7 / साइट्स / सभी / मॉड्यूल / "पुराना कोड" /legacy.module (फ़ाइल संपादित करें) ~ $ cd! $: h सीडी / यूएसआर / शेयर / ड्रुपल 7 / साइटें / सभी / मॉड्यूल / "पुराना कोड" / usr / शेयर / drupal7 / साइटों / सभी / मॉड्यूल / पुराने कोड $
लेकिन, मुझे लगता है कि एक अच्छा सामान्य कथन यह है कि यह विफल रहता है यदि /
फ़ाइल नाम में अंतिम उद्धृत किया गया है:
~ $ vim "/ usr / share / drupal7 / साइट्स / सभी / मॉड्यूल / पुराने कोड / विरासत .odule" (फ़ाइल को संपादित करें) ~ $ cd! $: h सीडी "/ usr / शेयर / drupal7 / साइटों / सभी / मॉड्यूल / पुराने कोड > Ctrl+ C (शेल निरंतरता पाठ के लिए पूछता है क्योंकि यह एक बेजोड़ उद्धरण चरित्र देखता है।)
यदि फ़ाइल वर्तमान निर्देशिका में है तो यह भी विफल हो जाती है:
~ $ vim legacy.module (फ़ाइल संपादित करें) ~ $ cd! $: h सीडी विरासत -बाश: सीडी: विरासत। सूत्र: ऐसी कोई फ़ाइल या निर्देशिका नहीं ~ $ ( : h का कोई प्रभाव नहीं है क्योंकि ! $ में a / ) नहीं है
लेकिन यह तुच्छ है। यदि फ़ाइल वर्तमान निर्देशिका में है, तो आप बिलकुल नहीं करेंगे cd
। यदि आप फ़ाइल नाम को एक चर में रखते हैं तो एक और समस्या होगी:
~ $ fn = / usr / share / drupal7 / साइट्स / सभी / मॉड्यूल / विरासत / विरासत .odule ~ $ vim "$ fn" (फ़ाइल संपादित करें) ~ $ cd! $: h सीडी "$ fn" -बैश: सीडी: /usr/share/drupal7/sites/all/modules/legacy/legacy.module: निर्देशिका नहीं ~ $ ( : h का कोई प्रभाव नहीं है क्योंकि ! $ (जो "$ fn" है ) में a / शामिल नहीं है )
आप इसे इस प्रकार संभाल सकते हैं:
~ $ fn = / usr / share / drupal7 / साइट्स / सभी / मॉड्यूल / विरासत / विरासत .odule ~ $ vim (फ़ाइल संपादित करें) ~ $ cd "$ {fn% / *}" / usr / शेयर / drupal7 / साइट / सभी / मॉड्यूल / विरासत $
के रूप में अन्य उत्तर का सुझाव दिया, का उपयोग .
या "$PWD"
के लिए git add
आदेश।
दो चरण:
एक शेल स्क्रिप्ट "cdfile" युक्त बनाएं cd "$(dirname "$1")"
, इसे निष्पादन योग्य बनाएं और इसे कहीं रख दें, जहां यह पाया जाएगा।
अब उपयोग करें
vim /usr/share/drupal7/sites/all/modules/legacy/legacy.module
cdfile <alt>+<.> # for last command attribute
git add .
cd
शेल स्क्रिप्ट में केवल स्क्रिप्ट के बाकी हिस्सों को प्रभावित करेगा - और यदि स्क्रिप्ट केवल एक ही कमांड है, तो "बाकी स्क्रिप्ट" कुछ भी नहीं है। कोई स्क्रिप्ट स्क्रिप्ट को लागू करने वाले मूल शेल की कार्यशील निर्देशिका को प्रभावित नहीं कर सकती है।
उपयोग करना dirname
और !$
:
vim /usr/share/drupal7/sites/all/modules/legacy/legacy.module
cd "$(dirname !$)"
git add "$PWD"