"उपयुक्त-स्थापित स्थापित करें" क्या करता है और यह कैसे काम करता है?


54

मैंने किसी को टाइप करते देखा है

apt-get install !!

उन्होंने ऐसा किया कि कुछ समय और हर बार, एक अलग कार्यक्रम स्थापित किया गया था। ऐसा लगता है कि यह स्वचालित रूप से पता लगा लिया है कि आगे क्या जरूरत है।

हालाँकि, जब मैंने इसे अपने Ubuntu 14.04.1 LTS वर्चुअल मशीन पर आज़माया, तो यह सिर्फ कुछ उपयोग के निर्देशों को दिखाता है। apt-get install !!बहुत अच्छी तरह से काम करने के लिए Googling नहीं लगता है। कई खोज परिणामों में डबल विस्मयादिबोधक चिह्न नहीं होता है।

क्या करता apt-get install !!है और मेरी मशीन पर क्या गायब हो सकता है कि यह काम नहीं करता है?


जवाबों:


74

!! बैश में एक शॉर्टकट है जिसका अर्थ है अंतिम कमांड निष्पादित।

इसे इस्तेमाल करे:

 echo hello
 !!

इस संदर्भ में, !!वसीयत को दूसरे तक विस्तारित किया जाएगा echo hello

मुझे लगता है कि क्या हुआ था कि उन्हें एक कमांड चलाने की कोशिश की गई थी और यह विफल हो गया और शिकायत की कि यह स्थापित नहीं था। इसलिए उन्होंने टाइप किया sudo apt-get install !!क्योंकि पैकेज का नाम संयोग से उसी के नाम के समान था जिसे उन्होंने चलाने की कोशिश की थी। परिणामी कमांड एक पैकेज को उसी नाम से स्थापित करने का प्रयास करेगी जिस कमांड को उन्होंने निष्पादित करने का प्रयास किया था।


10
हाँ, शायद यही बात है। अगर मैं चलाता हूं lynx, तो देखें कि यह स्थापित नहीं है और फिर apt-get install !!इसे स्थापित करें lynx। यह मेरे लिए काम नहीं किया, क्योंकि मैंने apt-get install !!केवल कमांड के रूप में कोशिश की ।
थॉमस वेलर

4
एक और आम उपयोग यह है कि जब कुछ के रूप में चलाया जाना चाहिए था sudo, जैसे apt-get installकुछ।
एमबीराडेल

6
@AL: आप पहले टाइप करते हैं apt-get install some-program, और जब आपको पता चलता है कि आपके पास विशेषाधिकार नहीं हैं, तो आप बस sudo !!, जिसका विस्तार होता है sudo apt-get install some-program
मर्गिसिसेया

3
!!के लिए एक उपनाम है !-1, जिसका अर्थ है बैश इतिहास में अंतिम वस्तु। !-2तपस्या और इतने पर है।
टिम

41

!!कुछ नहीं करना है apt-get। यह एक शेल कीवर्ड है जिसे पिछली कमांड में विस्तारित किया जाएगा। यह विस्तार वर्तमान कमांड की व्याख्या करने से पहले शेल द्वारा किया जाता है।

से man bash:

!! पिछली कमांड का संदर्भ लें। यह `-1 'का पर्यायवाची है।

उदाहरण के लिए, यदि आप एक कमांड चलाते हैं:

echo "foo"

यदि आप दौड़ते हैं तो:

sudo apt-get install !!

इसका विस्तार किया जाएगा:

sudo apt-get install echo foo

जैसा कि आप देख सकते हैं कि इसे दो पैकेजों में विस्तारित किया गया है echoऔर दूसरा है foo। कोई स्टैंडअलोन पैकेज नामित है fooऔर echo। इसके अलावा खोल से निर्मित echoहोती है /bin/echoनिष्पादन योग्य है कि ग्नू-coreutils पैकेज का एक हिस्सा है। तो, आपको यह कहते हुए त्रुटियां मिलेंगी कि ऐसा कोई पैकेज उपलब्ध नहीं है।

दूसरी ओर दूसरा व्यक्ति कुछ ऐसा कर रहा होगा:

$ cowsay
The program 'cowsay' is currently not installed. You can install it by typing:
sudo apt-get install cowsay

$ sudo apt-get install !!
sudo apt-get install cowsay
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  filters
The following NEW packages will be installed:
  cowsay
0 upgraded, 1 newly installed, 0 to remove and 119 not upgraded.
Need to get 18.5 kB of archives.

जैसा कि आप देख सकते हैं cowsayस्थापित किया जा रहा है।

मैं आपको सुझाव दूंगा कि आप ऐसा न करें (जब तक आपको यकीन न हो), स्पष्ट नहीं होने से नुकसान नहीं होता है।


2
के लिए महान व्याख्या !!। मुझे पता था कि इसका क्या मतलब है, लेकिन मुझे इसका वर्णन करने का तरीका पसंद है।
टेरेंस

1
घर पर इसे आज़माने के लिए चेतावनी के लिए +1।
शादुर

16

!!: पिछली कमांड का संदर्भ लें। यह !-1( स्रोत ) के लिए एक पर्याय है ।

उदाहरण के लिए, यदि मैं निष्पादित करता हूं:

./test

फिर याद रखें कि मुझे रूट होना चाहिए, फिर मैं बस टाइप कर सकता हूं:

sudo !!

यह टाइपिंग के समान है:

sudo ./test

यह तब उपयोगी होता है जब आपके अंतिम कमांड में बहुत सारे अक्षर होते हैं।


1
प्रतिभाशाली! मैंने sudo !!कमान के बारे में कभी नहीं सोचा था ; जो मैं वर्षों से कर रहा हूं वह एक बार ऊपर की दबाएं, फिर कर्सर को बाईं ओर ले जाएं और जोड़ दें sudo
IQAndreas

1
@IQAndreas आपका तरीका आपको कमांड को डबल-चेक करने का मौका देता है, जो कि रनिंग के दौरान कोई बुरी बात नहीं है sudo
मैट नॉर्डहॉफ

1
मैंने हमेशा "सूडो !!" पढ़ा। के रूप में "मैं च **** के लिए sudo मतलब था"
विक्टर Mellgren

1
@ विक्सन: उस मामले में, आपके लिए थोफ भी कुछ हो सकता है
थॉमस वेलर

@IQAndreas कर्सर को बाईं ओर ले जाने से बहुत उबाऊ लगता है। सिर्फ Ctrl+Aया कम से कम क्यों नहीं Home?
रुस्लान

2

प्रश्न का उत्तर पहले ही दिया जा चुका है, इसलिए मैं दोहराव नहीं करूंगा। हालाँकि, मैं यह बताना चाहूंगा कि विभिन्न गोले में कई ऐसे शॉर्टकट हैं जो कमांड को दोहराने / खोजने / संपादित करने में मदद करते हैं। उनमें से कुछ जिनका मैं उपयोग करता हूं:

  1. !$इसके बाद ENTERअंतिम कमांड का अंतिम शब्द टाइप करेगा। उदाहरण के लिए,

    ls -l /let/me/in
    cd !$
    

यह आपको अंदर ले जाएगा /let/me/in

  1. Ctrl- Rऔर फिर पिछले कमांड से कुछ शब्द टाइप करें। उदाहरण के लिए, यदि आपके द्वारा लिखा गया vi /home/mycoolproject.shहै और यह बाद की तरह कुछ यादृच्छिक आदेशों के साथ ls, cd, pwd, आदि तो बस टाइपिंग Ctrl- Rद्वारा पीछा किया coolहै कि ऊपर खींच लेंगे viआदेश।

बस बैश (या csh या जो भी) कीबोर्ड शॉर्टकट खोजें और यह आज आपके द्वारा किया गया सबसे अच्छा काम होगा!

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