È possibile afferrare e memorizzare l'ID della finestra restituita di un terminale aperto tramite applecript o bash?


2

Ho lavorato su questo "dashboard" per aiutare a controllare l'ambiente del mio server localhost. È stato scritto in bin / bash per riferimento. Recentemente ho scoperto che posso usare il comando bin "osascript" per eseguire un comando "AppleScript" attraverso il Terminale, e sto giocando con quello da incorporare nella mia dashboard. In questo modo, posso eseguire comandi e controllare il mio server localhost attraverso una finestra, mentre in background può aprire attività separate senza ostruire la finestra principale.

Ecco la mia domanda principale che ruota attorno a questo concetto, ho notato che quando si esegue un comando osascript, restituisce le seguenti informazioni: scheda 1 della finestra id 11148.

Questa è la frase bash del mio script .sh:

osascript -e "tell application \"Terminal\" to do script \"cd $devFolder;svn up\""

E questo è l'output che posso vedere nel mio terminale:

tab 1 of window id 11197

Inizialmente, avrei voluto averlo appena aperto una nuova scheda, ma sto bene aprendo una finestra come al solo scopo di farlo funzionare. Quindi, come afferma la mia domanda, è possibile in qualche modo archiviare o recuperare quell'ID della finestra del terminale che è stato appena creato? Mi permetti di interagire con quella specifica finestra e controllarla?

Risposte:


0

Dall'editor AppleScript:

tell application "Terminal"
    set windowInfo to do script "echo \"hi user273298\""
    do script "echo \"hi adayzdone\"" in windowInfo
end tell

MODIFICARE

osascript -e '
tell application "Terminal"
    set windowInfo to do script "echo \"hi user273298\""
    do script "echo \"hi adayzdone\"" in windowInfo
end tell
'

Non sono sicuro di come questo dovrebbe memorizzare il testo di output che è stato restituito quando è stato eseguito quel comando osascript. Vedo quella variabile "windowInfo", ma non riesco ad accedervi al di fuori di quel comando.
Pixxl,

0

Aggiungi l'id della scheda e della finestra come inidentificatore:

tab=$(osascript -e 'tell app "Terminal" to do script "uptime"');osascript -e 'tell app "Terminal" to do script "uptime" in '"$tab"

Puoi anche usare in window 1per eseguire un comando in una finestra esistente:

osascript -e 'tell app "Terminal" to do script "uptime"';osascript -e 'tell app "Terminal" to do script "uptime" in window 1'

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.