Làm cách nào để thiết bị đầu cuối iTerm thông báo cho tôi khi công việc / quy trình hoàn tất?


105

Một thông báo từ trung tâm thông báo sẽ là lý tưởng nhưng tiếng gầm gừ, thanh thoát, âm thanh, v.v. cũng sẽ ổn (hoặc nếu điều này chỉ có thể được thực hiện trong Terminal.app, tôi sẵn sàng chuyển lại). Có tùy chọn nào đó trong iTerm để bật thông báo hay đó là thứ tôi phải nhập vào cuối một lệnh trong thiết bị đầu cuối? Nếu sau này, liệu có thể thêm cảnh báo sau khi quá trình bắt đầu (ví dụ: nếu tôi nhận ra rằng nó sẽ mất nhiều thời gian hơn tôi dự kiến ​​ban đầu, tôi đoán sai).

Câu trả lời:


197

Thông báo về một quá trình đã chạy

Phím tắt: Ahoặc:

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

Con mắt ma quái!: iTermtheo nghĩa đen sẽ để mắt đến (ở góc trên cùng bên phải) thiết bị đầu cuối của bạn. Khi lệnh kết thúc, nó sẽ liên hệ với Notification Center.

Tại sao?

Chúng tôi đã khởi chạy lệnh. Chúng tôi đã đánh giá thấp thời gian cần thiết để hoàn thành, chúng tôi không muốn hủy bỏ nó, và chúng tôi từ chối ngồi xuống và xem nó. vd: a brew updatesau một thời gian dài!

Yêu cầu

iTerm: Tích hợp Shell:

iTerm2 -> Install Shell Integration

Lưu ý rằng tích hợp sẽ không hiển thị thông báo cho đến khi iTerm2 được khởi động lại.


11
Sau khi cài đặt tích hợp shell, bạn có thể muốn đi đến iTerm2 -> Preferences -> Profiles -> Terminal, cuộn xuống và bỏ chọn "Hiển thị các chỉ báo đánh dấu", tôi không thích tích hợp shell này. Bạn cũng có thể muốn Chỉnh sửa -> Đánh dấu và Chú thích -> Cảnh báo -> Đăng thông báo nếu bạn muốn thông báo hệ điều hành thay vì cửa sổ bật lên kiểu cảnh báo.
Charles L.

@simonhamp tôi đề nghị sử dụng trigger ( iterm2.com/documentation-triggers.html ) cho các phiên chôn
phirschybar

3
@dwanderson Bạn đã bao giờ làm việc này với tmux chưa? Điều này sẽ rất hữu ích
Lucas

@Lucas có một dòng trong tài liệu nói rằng tích hợp shell không hoạt động với tmux hoặc screen iterm2.com/documentation-shell-integration.html
Rich Stone

2
Con mắt này làm tôi sợ !! (╯ ‵ □ ′) ╯︵┻━┻
WTIFS

42

Bạn có thể thêm bất kỳ lệnh nào sau đây vào sau bất kỳ lệnh nào, với dấu chấm phẩy ở giữa lệnh và lệnh:

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

osascript -e 'beep 3'

tput bel

hoặc, nếu bạn thích Trung tâm thông báo

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

Bạn cũng có thể tạo một bí danh trong hồ sơ của mình, được gọi notifyvà thêm bí danh đó vào cuối lệnh của bạn. Vì vậy, trong hồ sơ đăng nhập của bạn

alias notify="tput bel"

sau đó

sleep 10; notify

Hoặc, nếu bạn bắt đầu lệnh của mình và nó bị "treo", chỉ cần gõ notifyvà nhấn Entervà nó sẽ chạy notifybí danh của bạn ở cuối, nếu lệnh đã kết thúc, ví dụ:

sleep 20

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

Rất tiếc, với lệnh này, osascript -e 'display notification "Task finished" with title "Terminal"'dường như tôi gặp lỗi này2015-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:
truth1ness

phần hai của lỗi/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.
truth1ness

Bạn đang sử dụng hệ thống cũ hơn Mavericks hoặc Yosemite?
Mark Setchell

Không, Yosemite 10.10.3
truth1ness

Ồ, thật kỳ lạ. Bạn có thể thử một cái gì đó đơn giản hơn như osascript -e 'display notification "Hello"'- bằng cách sao chép và dán cụ thể từ đây.
Mark Setchell

33

Và bạn luôn có thể sử dụng saylệnh.

Thông thường, khi bạn đang chạy một tiến trình dài bên trong thiết bị đầu cuối và muốn cập nhật, bạn có thể chỉ cần sử dụng lệnh này để nói những thứ như donehoặc errorhoặc bazinga.

mvn clean install; say done 

Lệnh này xây dựng một ứng dụng java spring và mất nhiều thời gian và nó sẽ phát ra donesau khi quá trình hoàn tất.


16

iTerm2hỗ trợ Growlthông báo. Bạn có thể bật tính năng này trong từng cài đặt cấu hình.

Chọn một cấu hình trong Preferences…-> Profiles. Sau đó, trong Terminaltab có một tùy chọn Enable Growl Notifications.

Hãy nhớ cũng bật iTermthông báo trong Growltùy chọn.

Nếu bạn muốn nhận thông báo về một quy trình nhất định, bạn có thể thử thử nghiệm Triggers. Bạn xác định trình kích hoạt trong Advancedtab trong cài đặt hồ sơ. Bằng cách này, bạn có thể gán một thông báo Growl cho một đầu ra cụ thể của quy trình của bạn (regexp).

Ví dụ bạn có thể làm:

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

Và kết nối trình kích hoạt với thông báo "end-of-my-process".

Cập nhật

Đọc thêm về trình kích hoạt trên iTerm2.com .


Vì vậy, tôi nói đúng rằng không có cách chung nào để nhận được cảnh báo cho bất kỳ quá trình đã hoàn thành nào bởi vì tôi cần phải chạy tập lệnh một lần để biết nó viết gì vào cuối quá trình (và tôi phải tạo một tập lệnh cho mọi tập lệnh tôi chạy )? Ví dụ: dòng cuối cùng cho quy trình youtube-dl là [download] 100% of 40.13MiB in 00:13nhưng dòng này được lặp lại cho mọi tệp mà nó kết thúc. Tôi sẽ nhập gì cho chuỗi 'end-of-my-process' của mình? Tôi có thể tạo kích hoạt khi lời nhắc ~ >trình bao mặc định của tôi hiển thị lại không?
truth1ness

@ truth1ness Tôi không nghĩ rằng có một cách chung chung để được thông báo về quá trình đã hoàn thành. iTermgửi thông báo cho đầu ra đầu cuối mới, cho đầu ra cuối. Điều này có thể hoạt động đối với một số quy trình. Cách làm việc cho tất cả các quy trình là những gì tôi đã đề xuất. thông báo "end-of-my-process" có thể là bất kỳ chuỗi duy nhất nào. Duy nhất nó theo cách mà nó sẽ không được in bởi quá trình của bạn. Nghĩa đen có thể là văn bản "kết thúc quy trình của tôi". Bạn phải nhập chính xác cùng một chuỗi vào định nghĩa trình kích hoạt và đính kèm thông báo vào đó. Tôi không biết nếu nó sẽ hoạt động với dấu nhắc trình bao. Bạn phải thử nó cho mình.
baf

À, tôi hiểu lầm rồi, tôi hiểu rồi. Tôi có thể nhận được cảnh báo bật lên với đầu ra tiếng vọng "kết thúc quá trình của tôi". Tuy nhiên, tôi cũng nhận được cảnh báo khi thực sự phát lệnh echo trước khi quá trình bắt đầu. Làm cách nào để yêu cầu iTerm bỏ qua chuỗi khi tôi thực sự đưa ra lệnh và chỉ nhìn vào chuỗi echo'd? Từ tệp trợ giúp, tôi đã thử thêm regex trình kích hoạt với \ 0 ("Toàn bộ giá trị được khớp với biểu thức chính quy.") Nhưng nó vẫn thực thi trình kích hoạt hai lần.
truth1ness

@ truth1ness Hãy sáng tạo, chẳng hạn như sử dụng echo "end-of-""my-process" với dấu ngoặc kép bên trong. Nó sẽ chỉ khớp với văn bản "end-of-my-process" khi quá trình kết thúc.
baf

9

Có một công cụ OSS được gọi là noti .

Bạn có thể dễ dàng cài đặt nó với brew install noti và bắt đầu sử dụng nó chỉ bằng cách thêm tiền tố vào lệnh của bạn với notilike noti sleep 3.


3

Bạn cũng có thể sử terminal-notifierdụng thông báo hệ thống mac OS. Để cài đặt nó qua Home brew chỉ cần:

$ brew install terminal-notifier

Sau đó, nếu bạn muốn hiển thị thông báo khi công việc / quy trình của bạn hoàn thành, hãy sử dụng một cái gì đó như thế này

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

Và màn hình hiển thị như thế này:

nhập mô tả hình ảnh ở đây

Bạn cũng có thể thay đổi âm thanh và biểu tượng của thông báo. Thông tin thêm trong github repo: https://github.com/julienXX/terminal-notifier


1

Cài đặt tích hợp shell iTerm2

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

Thực thi lệnh của bạn và nối ứng dụng chú ý, ví dụ:

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

Nó sẽ khiến ứng dụng iTerm trả lại biểu tượng của nó sau khi công việc hoàn tất.

Bạn cũng có các tùy chọn chú ý khác:

$ .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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.