क्या में उपयोग कर सकता हूँ '!!' उपनामों या लिपियों में?


10

टर्मिनल में मैं उपयोग कर सकता हूं !!जो मेरी पिछली कमांड को संदर्भित करेगा।
क्या एक उपनाम में इसका उपयोग करना संभव है? मैंने इसकी कोशिश की है, लेकिन क्या होता है कि दोहरे विस्मयबोधक चिह्न की शाब्दिक व्याख्या की जाती है।

मैं जो करना चाहता हूं वह है:

  1. मैं कुछ कमांड दर्ज करता हूं
  2. मैं एक उपनाम टाइप करता हूं जिसमें वह शामिल होगा जो चरण 1 में दर्ज किया गया था

यदि स्क्रिप्ट का उपयोग करके कोई समाधान है जो स्वीकार्य भी है।


आपका मुख्य लक्ष्य क्या है? अंतिम आदेश में अधिक विकल्प जोड़ें?
सर्गी कोलोडियाज़नी

मेरा कोई लक्ष्य जल्दी से एक लंबी कमांड टाइप करने का नहीं है जिसका मैं अक्सर उपयोग करता हूं। इसके बीच में एक लंबी स्ट्रिंग होती है जो अक्सर पिछली कमांड होती है
लुडविग मैग्यूसन

ऐसा लगता है कि आप केवल fcकमांड चाहते हैं इसलिए यह एक टेक्स्ट एडिटर खोलता है, क्योंकि यह लंबे कमांड को संपादित करने का सबसे आसान तरीका है। मैं इसे अपनी पोस्ट में जोड़ दूं। इसके अलावा, हो सकता है कि आप कमांड का एक उदाहरण दे सकें?
सर्गी कोलोडियाज़नी

मेरी पोस्ट के लिए एक संपादन जोड़ा गया
सर्जियो कोलोडियाज़नी

जवाबों:


11

अंतिम निष्पादित कमांड को सूचीबद्ध करने वाली कमांड है fc -nl -1। आउटपुट प्रतिस्थापन का उपयोग करके, हम एक ही सामग्री में अधिक पैरामीटर जोड़ सकते हैं

$> ls /etc/passwd
/etc/passwd
$> $(fc -nl -1)  /etc/group                                                     
/etc/group  /etc/passwd
$> 

हालांकि, इस दृष्टिकोण के साथ कोटेशन एक मुद्दा हो सकता है

इसकी एक बहुत अच्छी विशेषता fcयह है कि यदि आप केवल fcअपने आप से कमांड चलाते हैं , तो यह FCEDITवेरिएबल में निर्दिष्ट टेक्स्ट एडिटर को खोलेगा (जिसे आप शायद संग्रहीत करना चाहते हैं ~/.bashrc) और लाइन की सामग्री आपकी अंतिम कमांड होगी। आपकी सहजता के लिए, मैं आपको nanoअपने पाठ संपादक के रूप में उपयोग करने का सुझाव देता हूं , लेकिन यदि आप जानते हैं vim - और भी बेहतर।

उदाहरण के लिए, क्या होगा अगर मुझे qdbus org.ayatana.bamf /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveWindowविशाल रेखा को संपादित करने की आवश्यकता है , सही? लेकिन fc, मैं खोल सकता हूं vimऔर संपादित कर सकता हूं /org/ayatana/bamf/matcher, बचा सकता हूं , बाहर निकल सकता हूं और यह चल जाएगा।


9

आप उपयोग नहीं कर सकते !!लेकिन ...

से मैनुअल :

Fc कमांड के साथ उपयोग करने के लिए एक उपयोगी उपनाम है r='fc -s', ताकि टाइपिंग 'r cc' cc के साथ अंतिम कमांड शुरू हो और 'r' टाइप करने से अंतिम कमांड फिर से निष्पादित हो।


तो यह मुझे अपने अंतिम आदेश की शुरुआत में कुछ जोड़ने की अनुमति देगा। इसके बीच में क्या है?
लुडविग मैग्नेसन

8

यदि आप !!इसके बजाय इतिहास विस्तार वाक्यविन्यास fc(पहले से ही उल्लेख किया गया) का उपयोग करने पर जोर देते हैं , तो एक तरीका है।

डिफ़ॉल्ट रूप से, historyविस्तार गैर-इंटरैक्टिव शेल सत्रों जैसे स्क्रिप्ट में अक्षम होता है।

स्क्रिप्ट में इतिहास का विस्तार करने के लिए पहले प्रासंगिक शेल विकल्पों को सक्षम करें:

set -o history 
set -o histexpand

set -o histexpandके रूप में set -Hभी लिखा जा सकता है ।

अब इतिहास विस्तार अभियान जैसे !!स्क्रिप्ट के अंदर काम करेगा।

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