मैं खराब बैश कमांड से कैसे बाहर निकलूं या रद्द करूं?


41

मुझे इसके लिए कुछ फ्लैक मिलने की उम्मीद है, लेकिन मुझे इसका जवाब कहीं नहीं मिल रहा है। ऐसा लगता है कि यह इतना स्पष्ट होना चाहिए। कभी-कभी, जब मैं बैश टर्मिनल में एक खराब कमांड टाइप करता हूं, तो कर्सर बिना किसी त्रुटि या किसी चीज के केवल अगली पंक्ति तक नीचे कूदता है। मैं नहीं बता सकता कि मैंने क्या गलत किया। यह ऐसा है जैसे मैं कार्यक्रम में फंस गया हूं। पुनर्व्यवस्थापन:

$ tidy

मैं: "उफ़! यह मेरे टाइप करने का मतलब नहीं है ..."

:q

मुझे: "यह काम नहीं किया ..."

:exit
:quit
exit
quit
/exit
/quit
-exit
-quit
-wtf???

मुझे पता है कि मैंने खराब कर दिया है, लेकिन मैं टर्मिनल को बंद किए बिना प्रॉम्प्ट पर वापस कैसे आ सकता हूं?



:qवास्तव में मेरे लिए काम किया; यह एक आज्ञा नहीं है?
लाल मटर

जवाबों:


53

तुम हमेशा की तरह स्पष्ट बातें की कोशिश कर सकते ^C, ^D(EOF), पलायन आदि, लेकिन अगर सब विफल रहता है मैं आमतौर पर साथ आदेश निलंबित अंत ^Z(नियंत्रण-जेड) जो कहते हैं मुझे खोल में वापस।

मैं तब एक psकमांड करता हूं और कमांड के PID (प्रोसेस आईडी) को नोट करता हूं और फिर एप्लिकेशन को समाप्त करने के लिए kill thePID( kill -9 thePIDयदि पूर्व काम नहीं करता है) कमांड जारी करता है।

ध्यान दें कि यह एप्लिकेशन / कमांड को समाप्त करने के लिए एक सुव्यवस्थित (कोई दंडित इरादा) तरीका नहीं है और आप शायद कोई जानकारी नहीं आदि का जोखिम चलाते हैं।

एक उदाहरण (मैंने इस्तेमाल किया है, tidyलेकिन मेरे पास यह स्थापित नहीं है):

$ gnuplot

    G N U P L O T
    Version 4.2 patchlevel 6 
     ....
    Send bug reports and suggestions to <http://sourceforge.net/projects/gnuplot>

Terminal type set to 'wxt'
gnuplot> 
gnuplot>               #####  typed ^Z here
[1]+  Stopped                 gnuplot
$ ps
  PID TTY          TIME CMD
 1681 pts/1    00:00:00 tcsh
 1690 pts/1    00:00:00 bash
 1708 pts/1    00:00:00 gnuplot
 1709 pts/1    00:00:00 ps


$ kill 1708            ###### didn't kill the command as ps shows

$ ps
  PID TTY          TIME CMD
 1681 pts/1    00:00:00 tcsh
 1690 pts/1    00:00:00 bash
 1708 pts/1    00:00:00 gnuplot
 1710 pts/1    00:00:00 ps
$ kill -9 1708           ### -9 did the trick
$ 
[1]+  Killed                  gnuplot

$ ps
  PID TTY          TIME CMD
 1681 pts/1    00:00:00 tcsh
 1690 pts/1    00:00:00 bash
 1711 pts/1    00:00:00 ps

8
बस!! ^ बचाव के लिए जेड। बहुत बहुत धन्यवाद।
डेविड कैनेडी

3
^ \ (ctrl-backslash, SIGQUIT) कुछ जिद्दी उपयोगिताओं में काम करता है जो ^ C का जवाब नहीं देते हैं।
mrb

2
श्श्श! लोगों को ^ \ _ के बारे में न बताएं या वे SIG_IGNभी शुरू कर देंगे , तो हम क्या करेंगे?
एलन करी

1
@godlygeek क्या आप बता सकते हैं कि लिनक्स में%% का क्या अर्थ है या यह किस प्रकार का है? मैंने बहुत खोजा।
नौमेनन

1
@ नोमैनन, एक नजर LESS='+/^JOB CONTROL' man bash%%"वर्तमान नौकरी" को संदर्भित करता है।
वाइल्डकार्ड

12

दबाने की कोशिश करो Ctrl- Dया Ctrl- C। यदि यह विफल रहता है, तो प्रक्रिया को मार डालो।

tidyआपके द्वारा बताए गए आदेश के साथ प्रयास करना , Ctrl- Dकाम करता है।


CTRL+Cविंडोज़ सीएमडी के लिए भी अच्छा है।
T.Todua

7

एक और समाधान (पहले से उल्लेख नहीं किया गया है) + SIGQUITका उपयोग करके संकेत भेजना हैctrl\

यह है मजबूत एक से ctrl+c


2

CTRL+D == exit shell command

तथा

CTRL+ C == terminate the current process, Of course may be the given software handle it and CTRL+D doens't work

kernel signalयदि आप अधिक जानना चाहते हैं, तो निश्चित रूप से, वे उत्पादन करते हैं:

man 7 signal

3
Ctrl + D अंतिम फ़ाइल है, सीधे बाहर निकलने की नहीं।
गाइल्स 'तथाकथित बंद किया जा रहा है बुराई'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.