Terminalbefehl, um das Öffnen eines neuen Tabs in Safari zu erzwingen

Während ich den open https://www.google.comBefehl mehrmals hintereinander im Terminal ausführe, ist mir aufgefallen, dass beim zweiten Ausführen des Befehls nur das ursprüngliche Fenster von google.com angezeigt wird, anstatt in einem neuen Tab geöffnet zu werden. Es funktioniert gut, wenn eine andere Website angefordert wird.

Ist das ein macOS-Bug? Ich habe versucht, neue Tabs in Safari auf immer zu setzen, aber kein Glück.

Ich versuche, Safari dazu zu bringen, immer einen neuen Tab zu öffnen, auch wenn es sich um dieselbe Website handelt. FYI Ich habe eine für Aktienwarnungen und öffnet automatisch einen neuen Tab im Standardbrowser, wenn Aktien mit Terminal gefunden werden, aber es öffnet neue Tabs nicht korrekt wie oben beschrieben.

Antworten (2)

Dieser Terminalbefehl sollte das erreichen, wonach Sie suchen.

osascript -e 'tell application "Safari" to activate' -e 'tell application "Safari" to tell window 1 to set URL of (make new tab) to "https://www.google.com"' -e 'tell application "Safari" to tell window 1 to set current tab to last tab'

Da der open Befehl nicht zu den gewünschten Ergebnissen führt, hier eine Anpassung meiner Antwort A: Öffnen Sie eine URL in Safari mit privatem Surfen, mit der Sie problemlos eine URL von der Befehlszeile aus in einem neuen Tab eines Safari- Fensters öffnen können oder es existiert bereits ein Tab mit dieser URL .

Es funktioniert unabhängig davon, ob Safari läuft oder nicht , und wenn es läuft, ob bereits ein Fenster vorhanden ist oder nicht.

Führen Sie im Terminal den folgenden zusammengesetzten Befehl aus :

f='openurl'; touch "$f"; open -e "$f"; chmod +x "$f"

Kopieren Sie den unten gezeigten AppleScript- Beispielcode , fügen Sie ihn in das geöffnete OpenURL - Dokument ein und speichern Sie ihn.

Sie sollten dann das openurl Shell-Skript in ein Verzeichnis verschieben , das sich innerhalb der PATH .

Ich habe es verschoben /usr/local/bin, zB:

sudo mv -v openurl /usr/local/bin/

Jetzt kann ich vom Terminal aus dieselbe URL in einem neuen Safari- Tab öffnen, unabhängig davon, ob bereits ein Tab mit dieser URL vorhanden ist oder nicht .

Wenn Sie nur den Namen der ausführbaren Datei ohne Argumente eingeben, wird gezeigt, wie sie verwendet werden kann, z. B.:

% openurl
Missing URL...
Example: openurl 'https://www.example.com'
%    

Beispiel AppleScript -Code :

#!/usr/bin/osascript

on run args
    if args is {} then return ¬
        "Missing URL..." & linefeed & ¬
        "Example: " & (name of me) & space & "'https://www.example.com'"
    
    set theURL to first item of args as string
    
    if not running of application id "com.apple.Safari" then
        tell application id "com.apple.Safari"
            activate
            set i to 0
            repeat until exists window 1
                delay 0.1
                set i to i + 1
                if i ≥ 40 then return
            end repeat
            set URL of current tab of window 1 to theURL
        end tell
    else
        tell application id "com.apple.Safari"
            if exists window 1 then
                tell window 1 to set URL of (make new tab) to theURL
            else
                make new document with properties {URL: theURL}
            end if
        end tell
    end if
end run


Hinweis: Der Beispiel- AppleScript- Code ist genau das und enthält abgesehen von der enthaltenen Fehlerbehandlung keine zusätzliche Fehlerbehandlung , die angemessen sein könnte. Es liegt in der Verantwortung des Benutzers, eine Fehlerbehandlung hinzuzufügen, die angemessen, erforderlich oder gewünscht ist. Sehen Sie sich die try- Anweisung und die error- Anweisung im AppleScript Language Guide an . Siehe auch Arbeiten mit Fehlern . Zusätzlich kann die Verwendung des Verzögerungsbefehls gegebenenfalls zwischen Ereignissen erforderlich sein, z. B. mitdelay 0.5 dem Wert der Verzögerungpassend einstellen.