OSX - "निकास" कमांड निष्पादित होने के बाद टर्मिनल विंडो को ऑटो बंद कैसे करें।


104

जब मैं टर्मिनल के साथ किया जाता हूं, तो मैं इससे बाहर निकलना चाहता हूं। अभी, मेरे पास तीन विकल्प हैं:

  1. किल टर्मिनल। यह प्रक्रिया को समाप्त कर देगा, लेकिन अचानक। मुझे नहीं लगता कि यह सबसे अच्छा विचार है।

  2. कॉल एग्जिट। मैंने सेटिंग बदल ली है इसलिए टर्मिनल से बाहर निकलें। एप्लिकेशन अभी भी डॉक में खुला दिखाई देता है, और वह नहीं करता है जो मैं इसे करना चाहता हूं।

  3. राइट क्लिक> छोड़ो। हालाँकि, यह बाहर निकलने के लिए एक टर्मिनल कमांड नहीं है।

तो अब, मुझे टर्मिनल से बाहर निकलने और बंद होने का क्या तरीका है? मैंने ऑसस्क्रिप्ट के बारे में कुछ सुना है लेकिन मुझे यकीन नहीं है। मैं बाहर निकलना और बंद करना चाहता हूं, ताकि टर्मिनल अब एक खिड़की के रूप में और एक प्रक्रिया के रूप में खुला न हो।


जैसे kill, killallभेजने में चूक SIGTERM, जिसे पकड़ा जा सकता है। कुछ कार्यक्रम इसे पकड़ते हैं, खुद के बाद साफ करते हैं और इनायत से निकलते हैं। अगर Terminal.appउनके बीच कोई विचार नहीं है । हालांकि, मुझे लगता है कि यह अलग या सुपर यूजर से चुटकी में कहना बेहतर होगा क्योंकि इसमें कोई प्रोग्रामिंग कंटेंट नहीं है।
dmckee --- पूर्व-मध्यस्थ ने बिल्ली का बच्चा

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

जवाबों:


194

टर्मिनल में

प्राथमिकताएँ> प्रोफ़ाइल> (प्रोफ़ाइल का चयन करें)> शेल।

'जब शेल से बाहर निकलता है' तो 'विंडो बंद करें'


@PrabhuKonchada बहुत भयानक नहीं होगा यदि आप उस जगह का उपयोग उपयोगकर्ता उत्पादन को खिलाने के लिए करना चाहते थे, लेकिन अन्यथा इन्सानिकोव के जवाब ने मेरे लिए ठीक ठीक किया होता
Frankenmint

स्पष्ट और स्वच्छ, परिपूर्ण।
अन्डिनुगुर

12
ओएस एक्स के नए संस्करणों में, यह विकल्प 'वरीयताएँ> प्रोफ़ाइल> (एक प्रोफ़ाइल का चयन करें)> शेल के तहत पाया जा सकता है।
XtraSimplicity


1
आप सभी प्रोफाइल का चयन भी कर सकते हैं, और सभी को एक ही बार में बदल सकते हैं।

31

अच्छे पुराने कमांड-क्यू के बारे में कैसे?


उसका मतलब कमांड क्यू है। क्या यह एक अच्छा तरीका है? यह मेरे लिए हत्या से अलग नहीं है।
डार्कस्टेल

@ डार्कस्टील: कमांड-क्यू मैक पर ऐप को बंद करने का उचित तरीका है। एक किलिंग करना संभवत: ठीक है क्योंकि ऐप को साफ-सुथरा समाप्त करने के लिए कहा गया है।
टोमलॉजिक

2
हाँ, मेरा मतलब "कमांड" टाइप करना था लेकिन यह Ctrl के रूप में सामने आया। मैं कहूंगा कि यह PEBBAF का मामला है (समस्या मस्तिष्क और उंगलियों के बीच मौजूद है)।
पवित्रकेक

मारना / मारना आम तौर पर एक आवेदन को समाप्त करने का एक अच्छा तरीका नहीं है। यह बिना सहेजे गए राज्य को छोड़ सकता है, या उस स्थिति को सहेज सकता है जो सही ढंग से प्रतिबिंबित नहीं करता है कि आवेदन आपको कैसा दिखाई देगा। मैक ओएस एक्स में एक "अचानक समाप्ति" सुविधा होती है जहां कार्यक्रम इंगित कर सकते हैं कि जब वे उस स्थिति में होते हैं, जहां उन्हें मारना सुरक्षित होता है (वास्तव में, वास्तव में), और यदि आपने टर्मिनल की स्थिति की जांच करने के लिए गतिविधि की निगरानी के साथ यह सत्यापित किया है कि पहले इसे मारना सुरक्षित है ("अचानक समाप्ति" कॉलम दिखाएं और "हाँ" देखें), आप ऐसा कर सकते थे, लेकिन आप आसानी से उस वर्कफ़्लो को स्वचालित नहीं कर सकते।
क्रिस पेज

हम हमेशा बाहर निकलने के बाद कमांड-क्यू का उपयोग कर सकते हैं, जो सभी प्रक्रिया को बंद कर देता है और फिर टर्मिनल को बंद कर देता है।
ऑप्टिमस प्राइम

29

टर्मिनल ऐप में, वरीयता >> प्रोफाइल टैब।

दाईं ओर शेल टैब चुनें । यहां छवि विवरण दर्ज करें

आप चेतावनी को दबाने के लिए बंद करने से पहले कभी नहीं पूछ सकते हैं ।


5
मैंने इसे When shell exits:"विंडो बंद करें"
अनूप

1
यह उत्तर मेरे लिए "कभी नहीं" चुनकर काम नहीं आया। हालांकि "अनूप की खिड़की बंद करो" के बारे में अनूप की टिप्पणी ने मेरे लिए मुश्किल खड़ी कर दी।
अल्टीमेटर

12

दरअसल, आपको अपने टर्मिनल पर एक कॉन्फिगरेशन सेट करना चाहिए, जब आपका टर्मिनल प्रेस + ,होगा तब आपको स्क्रीन के नीचे दिखाई देगा:

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

फिर शेल टैब दबाएं और आप स्क्रीन के नीचे देखेंगे:

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

अब जब शेल बाहर निकलता हैClose if the shell exited cleanly , तो उसके लिए चयन करें ।

हर बार उपरोक्त विन्यास के साथ exitटर्मिनल कमांड को बंद कर देगा लेकिन छोड़ नहीं देगा।


10

आप osascriptकमांड के माध्यम से AppleScript का उपयोग कर सकते हैं :

osascript -e 'tell application "Terminal" to quit'

मैंने ऑसस्क्रिप्ट कमांड की कोशिश नहीं की थी, लेकिन मेरे पास इसके साथ दो मुद्दे हैं: 1. यह एक कमांड छोड़ने के लिए लंबे समय तक है। यह आसान नहीं होना चाहिए? मुझे विंडोज में पसंद है कि कैसे निकास कमांड प्रॉम्प्ट को समाप्त करता है। 2. यह अभी भी मुझे टर्मिनल छोड़ने का संकेत देता है। मैं चाहता हूं कि यह सिर्फ गतियों से गुजरे। एक खिड़की ने पूछा कि क्या मैं वास्तव में छोड़ना चाहता हूं।
डार्कस्टेल

1
@ डार्कस्टील: 1. अपने .bashrc(या समकक्ष यदि आप एक अलग शेल का उपयोग करते हैं) में एक उपनाम जोड़ें । मैं अभी भी 2 के जवाब के बारे में सोच रहा हूँ
icktoofay

मुझे लगता है कि कमांड क्यू सबसे अच्छा काम करता है। लेकिन मैं उत्सुक हूं कि कैसे उर्फ ​​को ठीक से सेटअप किया जाए। "Ping google.com" जैसी कुछ कमांड हैं जो मैं अक्सर पर्याप्त करता हूं कि मैं एक उपनाम पसंद कर सकता हूं।
1

@darksteel: यह इसे उखाड़ फेंकने का एक तरीका है, लेकिन 2 को रोकने के लिए, आप एक डिमोनेटाइज्ड प्रक्रिया शुरू कर सकते हैं, जो एक सेकंड के बारे में सोती है, और फिर exitडीमैनेटाइज्ड प्रक्रिया शुरू करने के बाद। डीमॉनेटाइज्ड प्रक्रिया के बाद एक सेकंड इंतजार किया, यह osascriptवर्णित के रूप में कॉल कर सकता है ।
icktoofay

@darksteel: आप के माध्यम से एक कुंजी दबाने को गति प्रदान कर सकते हैं osascript: tell application "System Events" to keystroke "a" using command down। यह शायद इस मुद्दे पर भी होगा।
icktoofay

9

एक टर्मिनल विंडो में, आप टाइप कर सकते हैं:

kill -9 $(ps -p $PPID -o ppid=)

यह टर्मिनल आवेदन प्रक्रिया को मार देगा, जो कि वर्तमान प्रक्रिया के माता-पिता के माता-पिता हैं, जैसा कि मार कमांड द्वारा देखा गया है।

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

kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=) 

7
FYI करें, यह समाधान अन्य टर्मिनल विंडो को भी मारता है।
tresf

और kill -9तब तक उपयोग न करें जब तक कि आपको पता न हो कि अन्य सिग्नल काम नहीं करेंगे।
ट्रिपल एफ

9

मैं उपयोग कर रहा हूँ ctrl + d। यह आपको उस स्थान पर फेंकता है जहाँ आपने पहली बार sqlite3 कमांड शुरू किया है।


5

osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"

यह एक CMD+ wकुंजी अनुकरण करता है ।

यदि आप चाहते हैं कि टर्मिनल पूरी तरह से छोड़ दें तो आप उपयोग कर सकते हैं: osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"

यह कोई त्रुटि नहीं देता है और टर्मिनल को सफाई से बंद कर देता है।


4

आप इस जटिल कमांड का भी उपयोग कर सकते हैं, जो अपनी प्रक्रिया को समाप्त करने के बारे में चेतावनी को ट्रिगर नहीं करता है:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit

यह कमांड काफी लंबी है, इसलिए आप quitअपने बैश प्रोफाइल में एक उपनाम (जैसे ) को परिभाषित कर सकते हैं :
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'

यह आपको quitकिसी भी अन्य सेटिंग्स के साथ बेला होने के बिना बस टर्मिनल में टाइप करने की अनुमति देगा ।


2

osascriptअपने कोड में कमांड का उपयोग करें जैसा कि icktoofay का उल्लेख किया गया है:osascript -e 'tell application "Terminal" to quit'

फिर, टर्मिनल प्राथमिकताएं खोलें, सेटिंग्स> शेल पर जाएं, और "बंद करने से पहले शीघ्र:" को "कभी नहीं" सेट करें। टर्मिनल को अब पूरी तरह से छोड़ देना चाहिए (आपकी गोदी में खुला नहीं रहना चाहिए) और छोड़ने से पहले संकेत को अनदेखा करें। यदि आपके पास केवल एक टर्मिनल विंडो खुली है और osascriptकमांड आपकी अंतिम पंक्ति है, तो इसे खत्म होने से पहले आपके द्वारा चलाए गए कमांड के लिए इंतजार करना चाहिए।

यह आदर्श नहीं होगा यदि आप पृष्ठभूमि में एक ही खिड़की या अन्य खिड़कियों में स्क्रिप्ट चला रहे हैं (उदाहरण के लिए, आप पृष्ठभूमि में एक कमांड चला सकते हैं और अन्य कमांड के लिए वर्तमान विंडो का उपयोग जारी रख सकते हैं यदि पहली कमांड एक एम्परसेंड द्वारा पीछा की जाती है ); सावधान रहे!

यदि आप osascriptएक शेल स्क्रिप्ट फ़ाइल में कोड को लपेटते हैं , तो आप संभवतः इसे जो भी फ़ाइल नाम दे सकते हैं, उसे दे सकते हैं --- जब तक यह टर्मिनल के खोज पथ में है ( echo $PATHयह देखने के लिए कि टर्मिनल स्क्रिप्ट के लिए कहां दिखता है)।


1

एक स्क्रिप्ट बनाएँ:

cat ~/exit.scpt

इस तरह:

  • नोट: यदि केवल एक विंडो है, तो बस एप्लिकेशन को छोड़ दें, अन्यथा command + wटैब बंद करने के लिए अनुकरण करें)

tell application "Terminal" set WindowNum to get window count if WindowNum = 1 then quit else tell application "System Events" to keystroke "w" using command down end if end tell

फिर अपने * shrc में एक उपनाम जोड़ें

बस की तरह vi ~/.bashrcयाzshrc (कुछ और?)

इसे जोड़ें: alias exit="osascript ~/exit.scpt"

और स्रोत ~ / .bashrc या अपने टर्मिनल को फिर से खोलें


0

मैं उपयोग कर रहा हूं

छोड़-एन टर्मिनल

मेरी लिपियों के अंत में। वरीयताओं में कभी भी संकेत नहीं करने के लिए आपके पास टर्मिनल सेट होना चाहिए

इसलिए टर्मिनल> प्राथमिकताएं> सेटिंग्स> शेल जब बाहर निकलता है तो विंडो को बंद करने से पहले कभी भी बंद न करें


0

मैंने यहां उत्तरों के कई रूपों की कोशिश की। कोई फर्क नहीं पड़ता कि मैं क्या कोशिश करता हूं, मुझे हमेशा एक उपयोग का मामला मिल सकता है जहां उपयोगकर्ता को टर्मिनल बंद करने के लिए प्रेरित किया जाता है।

चूंकि मेरी स्क्रिप्ट सरल है ( drutil -drive 2 tray open- एक विशिष्ट डीवीडी ड्राइव खोलने के लिए), उपयोगकर्ता नहीं करता है स्क्रिप्ट चलते समय को टर्मिनल विंडो देखने की आवश्यकता होती है।

मेरा समाधान स्क्रिप्ट को एक ऐप में बदलना था, जो टर्मिनल विंडो को प्रदर्शित किए बिना स्क्रिप्ट चलाता है। अतिरिक्त लाभ यह है कि कोई भी टर्मिनल विंडो जो पहले से खुली हुई हैं खुले रहें, और यदि कोई भी खुला नहीं है, तो स्क्रिप्ट समाप्त होने के बाद टर्मिनल निवासी नहीं रहता है। यह बश स्क्रिप्ट को चलाने के लिए टर्मिनल लॉन्च करने के लिए प्रतीत नहीं होता है।

मैंने अपनी स्क्रिप्ट को एक ऐप में बदलने के लिए इन निर्देशों का पालन किया: https://superuser.com/a/1354541/162011


-3

यदि यह एक मैक है जो आप 'बाहर निकलें' टाइप करते हैं तो रिटर्न दबाएं।

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