web-dev-qa-db-fra.com

Exécuter Safari depuis un terminal avec une adresse URL donnée sans commande ouverte

J'ai des problèmes pour ouvrir Safari depuis le terminal. La commande que j'ai essayée est

/Applications/Safari/Contents/MacOS/Safari http://www.example.com

Safari s'ouvre et tente de naviguer vers l'URL:

file:///Current/Terminal/Path/Here/http:/www.example.com

Je sais, je pourrais le faire en utilisant open:

open -a safari http://www.example.com

Mais je ne peux pas. La situation dans son ensemble est assez compliquée: j'essaie en fait d'exécuter le navigateur à partir d'une application .NET en ligne de commande (qui utilise mono). J'utilise la classe System.Process .NET pour exécuter la commande et je dois être capable de contrôler le processus (obtenir l'identifiant du processus, vérifier s'il est actif, le tuer si nécessaire, etc.). L'utilisation de la commande open ne renvoie pas l'ID de processus correct (j'ai essayé d'utiliser open avec -W switch - n'aide pas non plus).

8
MarcinJuraszek

Une solution serait le faire en 2 fois

  • Safari ouvert
  • Utiliser AppleScript pour ouvrir l'URL tell application "Safari" to open location "http://www.google.com"

Voici un oneliner:

/Applications/Safari.app/Contents/MacOS/Safari & sleep 1 && osascript -e 'tell application "Safari" to open location "http://www.google.com"'

NB: vous devez attendre avant d'exécuter AppleScript car Safari n'est pas encore démarré. Le sleep 1peut ne pas fonctionner dans tous les cas, car cela dépend vraiment du temps nécessaire à Safari pour démarrer.

6
Matthieu Riegler