नौकरी / प्रक्रिया पूरी होने पर मैं iTerm टर्मिनल को कैसे सूचित करूँ?


106

एक सूचना केंद्र अधिसूचना आदर्श होगी, लेकिन ग्रोथल, बाउंस डॉक, साउंड, इत्यादि ठीक होगा, (या यदि यह केवल टर्मिनल में किया जा सकता है। मैं वापस स्विच करने के लिए तैयार हूं)। क्या आईटर्म में नोटिफिकेशन को चालू करने के लिए कहीं एक विकल्प है या यह कुछ ऐसा है जो मुझे टर्मिनल में एक कमांड के अंत में टाइप करना है? यदि बाद वाला, क्या एक बार प्रक्रिया शुरू होने के बाद अलर्ट जोड़ना संभव है (उदाहरण के लिए अगर मुझे लगता है कि मुझे पहले की अपेक्षा में अधिक समय लगने वाला है, तो मैं अनुमान लगाने में बुरा हूं)।

जवाबों:


198

पहले से चल रही प्रक्रिया पर सूचित करें

शॉर्टकट: Aया:

Edit -> Marks and Annotations -> Alerts -> Alert on next mark

डरावना आँख!: iTermवस्तुतः आपके टर्मिनल के ऊपर (ऊपरी दाएं कोने पर) नज़र रखेगा। कमांड समाप्त होने के बाद, यह संपर्क करेगा Notification Center

क्यों?

हमने पहले ही कमांड लॉन्च कर दिया है। हमने पूरा करने के लिए आवश्यक समय को कम करके आंका, हम इसे रद्द नहीं करना चाहते हैं, और हम इसे बैठकर देखने से इनकार करते हैं। brew updateएक लंबे समय के बाद जैसे !

आवश्यकताएँ

iTerm: शैल एकीकरण:

iTerm2 -> Install Shell Integration

ध्यान दें कि iTerm2 के पुनरारंभ होने तक एकीकरण सूचनाएं नहीं दिखाएगा।


11
शेल इंटीग्रेशन स्थापित करने के बाद आप iTerm2 -> प्राथमिकताएं -> प्रोफाइल -> टर्मिनल, नीचे स्क्रॉल करें और "मार्क संकेतक दिखाएं" अनचेक करें, मुझे यह शेल एकीकरण पसंद नहीं आया। यदि आप अलर्ट शैली पॉपअप के बजाय ओएस सूचनाएं चाहते हैं तो आप संपादित करना भी चाहते हैं -> मार्क्स और एनोटेशन -> अलर्ट -> पोस्ट अधिसूचना।
चार्ल्स एल।

@simonhamp मैं दफन सत्रों के लिए ट्रिगर्स ( iterm2.com/documentation-triggers.html ) का उपयोग करने का सुझाव देता हूं
phirschybar

3
@dwanderson क्या आपको कभी tmux के साथ यह काम मिला? यह इतना मददगार होगा
लुकास

@Lucas डॉक्स में एक पंक्ति है जो कहती है कि शेल एकीकरण tmux या स्क्रीन के साथ काम नहीं करता है iterm2.com/documentation-shell-integration.html
रिच स्टोन

2
यह आँख मुझे डराती है !! ((WT □ ′) ╯
डब्ल्यूटीआईएफएस

42

आप किसी भी कमांड के बाद निम्न में से किसी एक को जोड़ सकते हैं, कमांड और उसके बीच में अर्ध-कोलन के साथ:

afplay /System/Library/Sounds/Ping.aiff -v 2

osascript -e 'beep 3'

tput bel

या, यदि आपको अधिसूचना केंद्र पसंद है

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'

आप अपने प्रोफ़ाइल में एक उपनाम भी बना सकते हैं, जिसे कॉल किया जा सकता है notifyऔर अपनी कमांड के अंत में जोड़ सकते हैं। तो, अपने लॉगिन प्रोफ़ाइल में

alias notify="tput bel"

फिर

sleep 10; notify

या, यदि आपने अपनी कमांड शुरू की है और यह "हैंगिंग" है, तो टाइप करें notifyऔर हिट करें Enterऔर यह notifyअंत में आपका उपनाम चलाएगा , जो कमांड समाप्त हो गया है, जैसे

sleep 20

# wait 5 seconds before realising this will take 20 seconds
notify<Enter>

हम्म, इस आदेश के साथ osascript -e 'display notification "Task finished" with title "Terminal"'मुझे यह त्रुटि मिल रही है2015-05-04 12:34:23.227 osascript[30467:1130887] Error loading /Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools: dlopen(/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools, 262): no suitable image found. Did find:
सच्चाई

त्रुटि के भाग दो/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools: no matching architecture in universal wrapper osascript: OpenScripting.framework - scripting addition "/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax" declares no loadable handlers.
सच्चाई

क्या आप Mavericks या Yosemite से अधिक पुराने सिस्टम पर हैं?
मार्क सेटिचेल

नहींं, योसेमाइट 10.10.3
सत्य

ओह, यह अजीब है। क्या आप कुछ सरल करने की कोशिश कर सकते हैं जैसे osascript -e 'display notification "Hello"'- विशेष रूप से यहाँ से कॉपी और पेस्ट करके।
मार्क सेटिचेल

33

और आप हमेशा sayकमांड का उपयोग कर सकते हैं ।

आमतौर पर जब आप टर्मिनल के अंदर एक लंबी प्रक्रिया चला रहे होते हैं और अपडेट प्राप्त करना चाहते हैं, तो आप बस इस कमांड का उपयोग doneया जैसी चीजों को बोलने के लिए कर errorसकते हैं bazinga

mvn clean install; say done 

यह कमांड एक जावा स्प्रिंग ऐप बनाता है, और एक लंबा लंबा समय लेता है, और यह doneप्रक्रिया पूरी होने के बाद बात करेगा ।


16

iTerm2Growlसूचनाओं का समर्थन करता है । आप इसे प्रत्येक प्रोफ़ाइल सेटिंग में चालू कर सकते हैं।

Preferences…-> में एक प्रोफ़ाइल का चयन करें Profiles। फिर Terminalटैब में एक विकल्प होता है Enable Growl Notifications

वरीयताओं iTermमें सूचनाओं को सक्षम करने के लिए भी याद रखें Growl

यदि आप किसी दिए गए प्रक्रिया के लिए अधिसूचना प्राप्त करना चाहते हैं तो आप प्रयोग करने की कोशिश कर सकते हैं Triggers। आप Advancedप्रोफ़ाइल सेटिंग में टैब में ट्रिगर परिभाषित करते हैं। इस तरह से आप अपनी प्रक्रिया (regexp) के एक विशेष आउटपुट के लिए एक ग्रोथ नोटिफिकेशन असाइन कर सकते हैं।

आप उदाहरण के लिए कर सकते हैं:

$ mycommand; echo "end-of-my-process"

और ट्रिगर को "एंड-ऑफ-माय-प्रोसेस" संदेश से कनेक्ट करें।

अपडेट करें

ITerm2.com पर ट्रिगर के बारे में और पढ़ें ।


तो क्या मैं सही हूं कि किसी भी तैयार प्रक्रिया के लिए अलर्ट पाने का कोई वैश्विक तरीका नहीं है, क्योंकि मुझे यह जानने के लिए एक बार स्क्रिप्ट को चलाने की जरूरत है कि यह प्रक्रिया के अंत में क्या लिखता है (और मुझे हर स्क्रिप्ट के लिए एक बनाना होगा )? उदाहरण के लिए, youtube-dl प्रक्रिया के लिए अंतिम पंक्ति है, [download] 100% of 40.13MiB in 00:13लेकिन यह पंक्ति हर फ़ाइल को पूरा करने के लिए दोहराई जाती है। मैं अपनी 'एंड-ऑफ-माय-प्रोसेस' स्ट्रिंग के लिए क्या रखूंगा? जब मेरा डिफ़ॉल्ट शेल प्रांप्ट ~ >फिर से दिखाई दे, तो क्या मैं एक ट्रिगर बना सकता हूं ?
सच्चाई

@ true1ness मुझे नहीं लगता कि समाप्त प्रक्रिया के बारे में सूचित करने का एक सामान्य तरीका है। iTermटर्मिनल आउटपुट के अंत के लिए नए टर्मिनल आउटपुट के लिए सूचनाएं भेजता है। यह कुछ प्रक्रियाओं के लिए काम कर सकता है। सभी प्रक्रियाओं के लिए काम करने का तरीका जो मैंने सुझाया है। "एंड-ऑफ-माय-प्रोसेस" संदेश किसी भी अद्वितीय स्ट्रिंग हो सकता है। इसे इस तरह से अद्वितीय बनाएं कि यह आपकी प्रक्रिया द्वारा मुद्रित नहीं किया जाएगा। शाब्दिक रूप से "अंत-मेरी-प्रक्रिया" पाठ हो सकता है। आपको ट्रिगर परिभाषा में ठीक उसी स्ट्रिंग को दर्ज करना होगा और इसके लिए एक अधिसूचना संलग्न करनी होगी। मुझे नहीं पता कि यह शेल प्रॉम्प्ट के साथ काम करेगा। इसे आपको खुद ही आजमाना चाहिए।
baf

आह, मैं गलत समझा, मुझे अब मिल गया। मैं इको आउटपुट "एंड-ऑफ-माय-प्रोसेस" के साथ पॉप अप करने के लिए अलर्ट प्राप्त करने में सक्षम था। हालाँकि, मुझे भी अलर्ट मिलता है जब मैं प्रक्रिया शुरू होने से पहले वास्तव में इको कमांड जारी करता हूं। जब मैं वास्तव में कमांड जारी करता हूं और केवल गूंज स्ट्रिंग को देखूंगा तो मैं स्ट्रिंग को अनदेखा करने के लिए iTerm को कैसे बताऊंगा? मदद फ़ाइल से मैंने ट्रिगर रेगेक्स को \ 0 ("नियमित अभिव्यक्ति द्वारा मिलान किया गया संपूर्ण मूल्य") से जोड़ने की कोशिश की, लेकिन यह अभी भी दो बार ट्रिगर को निष्पादित करता है।
सच्चाई

@ truth1ness रचनात्मक रहें, उदाहरण के लिए echo "end-of-""my-process" उद्धरण के साथ उपयोग करें। यह "एंड-ऑफ-माय-प्रोसेस" टेक्स्ट से मेल खाएगा जब प्रक्रिया समाप्त हो जाएगी।
बाफ

9

एक ओएसएस उपकरण है जिसे नोटी कहा जाता है ।

आप इसे आसानी से स्थापित कर सकते हैं brew install notiऔर अपनी कमांड को इसके notiजैसे उपसर्ग लगाकर इसका उपयोग शुरू कर सकते हैं noti sleep 3


3

आप terminal-notifierमैक ओएस सिस्टम नोटिफिकेशन का उपयोग कर सकते हैं । इसे होम ब्रू के माध्यम से स्थापित करने के लिए:

$ brew install terminal-notifier

फिर अगर आप चाहते हैं कि जब आपकी नौकरी / प्रक्रिया पूरी हो जाए तो आप अधिसूचना प्रदर्शित करें

$ <your job/process command> && echo 'Completed' | terminal-notifier -sound default

और इस तरह इस प्रदर्शन:

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

आप ध्वनि और सूचनाओं के आइकन को भी बदल सकते हैं। Github repo में अधिक जानकारी: https://github.com/julienXX/terminal-notifier


1

ITerm2 शेल एकीकरण स्थापित करें

curl -L https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh | bash

अपने आदेश का पालन करें और ध्यान एप्लिकेशन, जैसे

./task && ~/.iterm2/it2attention once

नौकरी पूरा होने के बाद यह ईमेल आइकन को उछाल देने का कारण होगा।

आपके पास अन्य ध्यान विकल्प भी हैं:

$ .iterm2/it2attention -h
Usage:
  it2attention start
    Begin bouncing the dock icon if another app is active
  it2attention stop
    Stop bouncing the dock icon if another app is active
  it2attention once
    Bounce the dock icon once if another app is active
  it2attention fireworks
    Show an explosion animation at the cursor
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.