2 votes

Quel est le moyen le plus sûr d'écrire cet applescript ?

J'utilise parfois une application tierce avec un terminal intégré pour écrire et/ou tester un script. J'ai écrit ce court applescript pour effacer complètement l'écran du terminal quelle que soit l'application que j'utilise. Je l'ai défini comme une fonction en haut de certains de mes script. Je n'ai jamais eu de problème jusqu'à aujourd'hui, où j'ai lancé ce script dans une application de type while true boucle.

clear(){
    osascript -e \
    'set theApp to (get the path to the frontmost application) as text
    set this_app to the name of application theApp
    activate application this_app
    tell application "System Events" to keystroke "k" using command down'   
}

Il est évident que faire tourner ça à l'infini n'est pas une bonne chose. J'ai été obligé d'éteindre manuellement l'ordinateur parce qu'il était bloqué dans l'application la plus en avant en frappant cmd k sans fin. Y a-t-il une meilleure façon d'écrire ceci pour que cela ne se reproduise pas ?

0 votes

Il n'y a rien de mal avec la fonction en soi, mais ne l'appelez pas dans une boucle sans fin ! Cela dit, personnellement, je préfère taper K deux frappes de clavier contre clear cinq frappes, car il semble insensé de taper cinq frappes alors que deux suffisent ! Si je devais l'utiliser, je l'appellerais c alors c'est sur une seule touche :) N'est-ce pas là tout l'intérêt d'utiliser des ordinateurs... moins d'entrées, plus de sorties. :)

0 votes

Lol assez juste. Le nom est juste pour que je n'oublie pas ce qu'il fait. C'est plus une question d'automatisation que de nombre de frappes, mais je vois ce que tu veux dire. Bon point.

0 votes

Pourquoi ne pas simplement taper ctrl+l dans le terminal ?

1voto

grg Points 181593

Un moyen beaucoup plus sûr est d'agir directement sur le menu.

clear() { osascript \
  -e 'tell application "System Events" to tell process "Terminal"' \
  -e   'click menu item "Clear to Start" of menu 1 of menu bar item "Edit" of menu bar 1' \
  -e 'end tell' \
  -e 'return'
}

0 votes

Votre code tel qu'il est écrit... 1. Ne fonctionne que pour OS X El Capitan et plus, c'est "Clear All" avant OS X El Capitan. 2. Il ne fonctionne que dans Terminal et le PO a exprimé qu'il veut utiliser la même chose dans Terminal et une autre application qui a un terminal intégré, avec apparemment la même chose. K donc cela ne fonctionnera pas dans le scénario de l'OP sur au moins #2 comme son code le fait. Je ne sais pas quel système d'exploitation il utilise pour la commande de menu, d'où le raccourci clavier. K peut être meilleur pour lui.

0 votes

@user Le code est un exemple. Ma première phrase est ma vraie réponse, mais j'ai pensé qu'il pourrait être utile de fournir un exemple de code. Bien sûr, le PO peut modifier le code pour faire ce qu'il souhaite, c'est juste un point de départ pour savoir comment manipuler les menus directement, ce qui était le but de ma réponse.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X