Fråga:
Hur får jag ett meddelande när mina kommandon är klara
Amir Afghani
2011-03-02 23:25:24 UTC
view on stackexchange narkive permalink

Jag kör en serie kommandon på kommandoraden som tar ungefär tjugo minuter att slutföra. Jag skulle vilja se någon form av anmälan på min Mac när dessa är klara så att jag inte behöver övervaka terminalen för när den är klar. Finns det ett sätt att göra detta?

  $ svn update. && ant clean build start && * notify_me_somehow *  

Edit :

Jag kunde använda xclock men detta verkar som ett hack. Helst skulle jag kunna skicka meddelandet var som helst, som min telefon, skärm osv.

Även om du befinner dig på kommandoraden tror jag att svaret här faktiskt är Mac-specifikt och inte Unix / Linux-relaterat. Det beror på att jag förmodligen vill använda Growl och `growlnotify`.
Det är inte ett inbyggt kommando, åtminstone på min låda.
http://growl.info/ Growl är det program som @mattdm refererar till.
Sexton svar:
Eugene Bujak
2011-03-03 02:38:45 UTC
view on stackexchange narkive permalink

(svn-uppdatering. && ant ren byggstart && säg gjort) || säg fel

Detta är ett underbart exempel på att använda skaloperatörer `&&` för att kedja ihop flera kommandon och lägga upp det med ett kollektivt `||` eller uttalande för att ta upp ett fel. +1 verkligen
Trevlig! För att kunna göra det snabbt ger jag upp felet kontra framgångsinformation och lade till ett globalt alias i min zsh: `alias -g sd = '; säg gjort ''. Det betyder att jag bara behöver lägga till 'sd' till vilket kommando som helst och jag får ett meddelande.
snyggt.och nu har jag något att leka med
Provat och både gjort och fel sägs alltid :( Exempel: `(echo alik && echo Orly && say done) || say error`
Hittade problemet."say" returnerar ett fel :( - GSSpeechServer [4039] Inget handtag för händelserport i deskriptor 12
`echo alik && (säg gjort; eko gjort) ||(ekofel; säg fel) `- fungerar även när säg returnerar ett fel.
Något är fel med din OSX-installation.Min rena OSX 10.11 returnerar inte fel - "säg && echo $?" Ger 0.
Väldigt händig.Jag har ekat med '' säg -v Zarvox '' som får alla i närheten att hoppa, det här är ett lite mindre alarmerande meddelande.
Jag vet inte vad jag förväntade mig men det var störande.
Tom Crockett
2013-03-19 05:41:46 UTC
view on stackexchange narkive permalink

I Mac OS 10.8 kan du skicka meddelande till meddelandecentret (liknar Growl men inbyggt i Mac OS).

Kolla in " Skicka en varning till meddelandecentret från kommandoraden i OS X" för att se hur du installerar en Ruby-pärla som gör att du kan skicka meddelanden från kommandot- linje. För att förenkla det vanliga användningsfallet med att bara bry sig om att något i terminalen görs, lägg till ett alias i din .bash_profile:

  alias notifyDone = 'terminal-notifier -title "Terminal "-meddelande" Klar med uppgift! "' 

Då kan du helt enkelt göra:

  $ <långkörande task>; notifyDone  

När den långvariga uppgiften är klar får du en fin modal popup som kvarstår tills du klickar på den:

Notification Center popup

[terminal-notifier] (https://github.com/alloy/terminal-notifier) ​​kan också installeras via [homebrew] (https://github.com/mxcl/homebrew): `brew install terminal-notifier` .Då kan du bara skriva 'myCommand && terminal-notifier -message' färdig '. Testat på OS X Yosemite (10.10.1).
Du bör köra `myCommand; terminal-notifier -meddelande 'klar' annars kommer meddelandet inte att visas om 'myCommand' misslyckas.
Fantastisk lösning!Förresten, detta producerar inte något ljud som andra OS X-meddelanden.Någon lösning för det?
@Cupidvogel du kan bara lägga till ett 'säg' kommando, t.ex. `mitt kommando;terminal-notifier -meddelande 'färdig';säg färdigt
Olika svar på denna fråga ger mycket mer information: https://apple.stackexchange.com/questions/57412/how-can-i-trigger-a-notification-center-notification-from-an-applescript-or-shel
För att lägga till ljud med "terminal-notifier" använd "-ljud Standard" -flaggan.Du kan ersätta "Standard" för alla namngivna varningsljud som är tillgängliga i Systeminställningar -> Ljud.
Loïc Wolff
2011-03-03 00:15:31 UTC
view on stackexchange narkive permalink

Använd Growl .

I filen .dmg letar du efter extran, det finns en growlnotify-binär. Installera det, ungefär som i / usr / local / bin . Sedan kan du använda det här kommandot

  growlnotify --sticky --appIcon <icon> --message <message> -t <title>  

för att visa en popup, så här:

growl

Jag använder nästan detta exakta tillvägagångssätt men jag utökar Growl med [Prowl] (http://www.prowlapp.com/) så att Growl kan skicka meddelandet till min iPhone.
Mountain Lion's Notification Center gör Growl onödigt ... se [mitt svar] (http://apple.stackexchange.com/a/85969/45503) för hur man använder det för detta.
Chris Page
2011-08-18 08:13:41 UTC
view on stackexchange narkive permalink

Från och med Mac OS X Lion 10.7 har Terminal några nya statusindikatorer som kan hjälpa till med frågor som detta:

I flikar:

  • Aktivitet: en Aktivitetsindikator (snurrförloppsindikator) visas när det nyligen har skickats till terminalen. Detta gör att du kan se om det för närvarande är upptaget eller har slutfört en lång process. (Eller naturligtvis kan du använda den för att berätta när den har börjat producera produktionen efter att ha tyst utfört arbete ett tag.)

  • Oläst: en ellips "..." visas för att ange ny oläst text i bakgrundsflikarna. När du väljer fliken rensas indikatorn.

  • Varning: en "klocka" visas för att ange när en BEL har skrivits till bakgrundsflikar eller bakgrundsfönster. Dessutom visar Terminal ett rött märke på applikationsikonen som anger antalet "olästa" varningar / klockor i alla terminaler. Om själva Terminal är i bakgrunden studsar den också sin Dock-ikon när en klocka spelas.

I minimerat fönster Dock-ikoner:

  • Aktivitet: aktivitet indikeras genom att visa namnet på förgrundsprocessen.

  • Oläst: oläst text indikeras med en ellips.

  • Minimerade terminalfönster visar liveinnehåll i sina Dock-ikoner. Detta kan användas för att se om det finns aktivitet, eller till och med för att avgöra vad terminalen gör, om utgången du letar efter är identifierbar (t.ex. en "topp" -skärm är ganska lätt att känna igen även i små storlekar). Detta är särskilt användbart när dockningsförstoring är aktiverad eller om du har plats för ett stort dockningsstation.

Dessutom kan du visa något i terminalen för att fånga din uppmärksamhet (som skulle vara synlig även i minimerade fönster). Till exempel:

  • Visa en stor asterisk: banner \ *

  • Invertera displayen: printf '\ e [? 5h'

  • Måla displayen röd: tput setab 1; tput rensat

  • Sitt i en slinga, blinka skärmen: medan det är sant; gör printf '\ e [? 5h'; sova 1; printf '\ e [? 5l'; sova 1; gjort

Det finns också flykoder för att manipulera fönster (flytta, ställa in storlek, zooma, minimera osv.). Du kan zooma terminalfönstret, till exempel:

  printf '\ e [9; 1t'  

Se "fönstermanipulation" på http : //invisible-island.net/xterm/ctlseqs/ctlseqs.html för detaljer.

En annan metod är att använda AppleScript för att visa en varning i ett separat fönster:

  osascript -e 'berätta för appen "Systemhändelser" för att visa varning "Byggt slutfört" meddelande "Kassan och byggnaden har slutförts."  
Utmärkt användning av tput och escape-sekvenser - du har allt utom ett rullningsmeddelande i namnlisten!
Austin Lucas
2012-07-17 11:19:45 UTC
view on stackexchange narkive permalink

Jag vet att jag är sen med frågan men jag tror att det saknas lite som kan vara till hjälp. Jag har upptäckt att även om det är snyggt är det inte exakt funktionellt att ha ditt terminalprat med dig. Vad som är bättre är något mer subtilt så här:

http://i.stack.imgur.com/FaZmF.png

Som Chris påpekade har Lion lagt till lite meddelandemärken när en BEL kastas. Du kan kasta det själv här med kommandot:

  tput bel  

Så, om du gör lite arbete i bakgrunden och vill ha ett meddelande när det är klart att du kan prova något som:

  ping -c 5 www.google.com && tput bel &  

Detta kör ping-kommandot som bakgrund uppgift (den hängande & åstadkommer detta) och får den att kasta en enkel varning när den är klar. Historiskt har BEL använts för att göra det [hemska] hårdvarupipet, men Lion har smakfullt ersatt det med ljudeffekten "ogiltigt kommando", ett meddelandemärke och terminalikonen som studsar två gånger i dockan.

'printf' \ a 'motsvarar' tput bel '. Observera att Terminal inte studsar Dock-ikonen om fliken som orsakade varningen för närvarande är aktiv.
Detta är vackert eftersom det inte kräver installation av ytterligare programvara.iterm2 (och att döma av skärmdumpen också Terminal) skickar redan ett meddelande när klockan ringer och skärmen minimeras.
mst
2011-03-03 02:12:13 UTC
view on stackexchange narkive permalink

Du kan också använda kommandot build in say för avisering, t.ex.: säg "ant: build: done." Se: man säger i terminalen.

Kevin Reid
2011-08-19 04:41:31 UTC
view on stackexchange narkive permalink

Jag presenterar i detta svar två saker:

  • Alternativet att använda afplay , som spelar upp ljudfiler , för anmälan.
  • mina verktyg för att rapportera utgångsstatus tillsammans med aviseringen.

Jag har det här skriptet, ~ / bin / donebeep :

  #! / bin / bashif ["$ @" = 0]; sedan afplay -v 2 /System/Library/Sounds/Blow.aiff &else afplay -v 2 /System/Library/Sounds/Sosumi.aiff &fi  

Detta spelar ett annat ljud beroende på om argumentet är 0. Då har jag ett alias:

  alias donebeep = '(savestatus = $ ?; ~ / bin / donebeep $ savestatus "$ @"; avsluta $ savestatus)'  kod> 

(Att de har samma namn är irrelevant och förmodligen en dålig idé.)

För att använda det i ditt exempel, uppdatera svn. && myra ren byggstart; donebeep . Observera att jag använder ; snarare än && , så att det kan meddela mig vid misslyckande och framgång.

Innan jag lärde mig om avplay , jag använde say för att tala meddelanden istället. Rollen som donebeep spelades av detta skript:

  #! / Bin / bashsay -v Bruce "Done $ (basnamn" $ (pwd) "), $ @. " &  

Detta skript talar utgångskoden direkt istället för att ha två olika meddelanden. Det nämner också namnet på den aktuella katalogen (för att klargöra vilken uppgift som utförs) och kan ges ytterligare text att säga genom att skicka parametrar till aliaset (det är därför aliaset har "$ @" i det). Observera den efterföljande & så att du inte behöver vänta på att talet ska avslutas innan du får en uppmaning.


man-sidan för avspelning är ofullständig; afplay -h listar alla alternativ:

  Användning: afplay [option ...] audio_fileOptions: (kan visas före eller efter argument) {-v | --volym} VOLYM
ställa in volymen för uppspelning av filen {-h | --hjälp} skriva ut hjälp {--leaks} köra läckageanalys {-t | --tid} TIME-uppspelning i TIME sekunder {-r | --rate} RATE-uppspelning med uppspelningshastighet {-q | --rQuality} KVALITET ställer in den kvalitet som används för hastighetsskalad uppspelning (standard är 0 - låg kvalitet, 1 - hög kvalitet) {-d | --debug} felsökningsutskrift  
Viktor Fröberg
2014-06-08 15:40:25 UTC
view on stackexchange narkive permalink

Jag skapar ett enkelt verktyg som gör exakt detta. https://github.com/vikfroberg/brb

Node.js måste installeras: http://nodejs.org

  $ npm install -g brb  

Instruktioner

  $ sleep 3; brb  
Daniel Schep
2016-05-19 20:46:59 UTC
view on stackexchange narkive permalink

Jag skrev ntfy för just detta ändamål.Det är plattformsöverskridande och kan automatiskt skicka meddelanden när långa kommandon är slut.

Om du har Pythons pip (de flesta Linux-distros och MacOS har det), här installerar du det och aktiverar automatiska aviseringar:

  $ sudo pip install ntfy $ echo 'eval "$ (ntfy shell-integration)"' >> ~/.bashrc$ # starta om skalet  

Kolla in det på http://ntfy.rtfd.io

Utöver det, det kan också:

  • undertrycka automatiska meddelanden när terminalen är i förgrunden (X11, iTerm2 & Terminal.app stöds och aktiveras som standard)
  • skicka molnbaserataviseringar (Pushover, Pushbullet och XMPP)
  • används för att skicka meddelanden när en process avslutas (inte ovan nämnda automatiska support)
  • manuellt skicka meddelanden (bra för användning i skript!)
jchook
2019-07-27 00:27:18 UTC
view on stackexchange narkive permalink

Du kan använda det inbyggda kommandot osascript för att köra ett Apple Script som visar en avisering, t.ex.

  osascript -e 'visa meddelande "Kommando gjort" med titeln "Din titel här" "
 

Du kan stränga ihop det med ett enkelt semikolon, t.ex.

  ditt kommando;osascript -e '....'
 
Arturo Herrero
2019-09-18 17:19:39 UTC
view on stackexchange narkive permalink

iTerm2 har en inbyggd mekanism för att få aviseringar men du måste installera Shell Integration.

När du startar ett långvarigt kommando väljer du:
Redigera> Märken och kommentarer> Varningar> Varning vid nästa markering ( ⌥Val + ⌘Kommando + A )

När kommandotolken återgår kan du välja mellan:

  • Visa Modal Alert Box
  • Inläggsavisering (exempel på skärmdump)

Dustin Kirkland
2012-02-17 12:32:27 UTC
view on stackexchange narkive permalink

Ubuntu skickar följande alias i ~ / .bashrc:

  alias alert = 'notify-send --urgency = low -i "$ ([$? = 0] && echo terminal || ekofel) "" $ (historia | svans -n1 | sed -e '\' 's / ^ \ s * [0-9] \ + \ s * //; s / [; & |] \ s * alert $ // '\' ') "'  

Med detta kan du göra saker som:

  make; alertsleep 10; alert  

Kanske finns det motsvarande notify-send i Mac OSX? Jag har sett liknande popup-fönster i både Mac och Ubuntu.

Du är på Apples webbplats. För att göra detta till ett svar, vänligen förklara hur du får `notify-send` på Mac OS X.
Jag håller med om att detta är typ av olämpligt, men jag tyckte faktiskt att det var till hjälp. Jag kom till den här frågan från Google, och min ursprungliga fråga var inte Mac-specifik. Liksom originalaffischen vill jag ha ett sätt att inte behöva övervaka min terminal när jag kör kommando som tar lång tid; Jag råkar bara använda Ubuntu: /
Sherwood Botsford
2013-03-23 12:19:16 UTC
view on stackexchange narkive permalink

Mitt problem med ljud och modala fönster är att jag inte kan säga varifrån de kommer. Jag arbetar för närvarande med en massa utrymmen och ibland upp till 20 terminalfönster.

Min lösning är portabel till unix-sidan och ska fungera med allt som stöder ansi escape-sekvenser. Den här lösningen fungerar med Snow Leopard och kommer antagligen att fungera med mer gamla versioner av terminalen.

En rad i .bash_profile

  funktionsur {$ *; eko -n -e "\ 033 [41m"; eko $ * Klar; datum ; eko -n -e "\ 033 [0m"; }  

Att bryta ner det:

  $ * expanderar till det ursprungliga kommandot som jag vill titta på. första escape-sekvensen ändrar bakgrundsfärg till redecho upprepar kommandot ( med röd bakgrund, ordet KLAR.Kördatum berättar när det är klart. sista flykt återställer terminalen till vad den var.  

Om du inte gillar rött, google ascii escape codes bakgrund Observera att detta inte ändrar hela skärmen rött, utan bara allt som matas ut efter att kommandot är klart.

Akash Agarwal
2016-10-15 20:03:08 UTC
view on stackexchange narkive permalink

Jag skapade ett manus för att lösa detta som finns här.Du behöver inte någon extra programvara för detta. Installation:
brygga installera akashaggarwal7 / tools / tsay
Användning:
sova 5;tsay

Bidra gärna!

Anledning till nedröstning?
randomor
2017-08-06 09:30:50 UTC
view on stackexchange narkive permalink

Här är min bash-funktion (placera den bara var som helst i din ~ / .bashrc eller ~ / .zshrc :

  klocka () {
  cmd = $ @ # Interpolera $ @ på något sätt fungerar inte direkt.
  $ @ && säger 'Watch Completed!'&& osascript -e "visa anmälan \" Slutförd: $ cmd \ "med titeln \" Watch Alert \ ""
}
 

Så här använder du det: titta på eko 'hej där'

Du kan också anpassa aviseringsljudet som dokumenterat här: https://apple.stackexchange.com/a/115373/9622

Jeff Dickey
2019-05-11 17:35:29 UTC
view on stackexchange narkive permalink

Jag gör den typen av saker hela tiden.Min kommandorad kan se ut

  $ rm Gemfile.lock && bin / setup && buntinstallation --inställningar && säger "Allt";säg "gjort"
 

Om kommandona bin / setup och bundle installation har slutförts kommer jag att höra systemets / diktatens röst säga "Allt klart".Om något av de två första fel uppstår följs inte && -kedjan och allt jag hör är "Klar".



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 2.0-licensen som det distribueras under.
Loading...