Comando de terminal para forzar la apertura de una nueva pestaña en Safari

Al ejecutar el open https://www.google.comcomando en la Terminal varias veces consecutivas, noté que la segunda vez que ejecuto el comando solo muestra la ventana original de google.com en lugar de abrirse en una nueva pestaña. Funciona bien cuando se solicita un sitio web diferente.

¿Es esto un error de macOS? Intenté establecer nuevas pestañas para siempre en Safari, pero no tuve suerte.

Estoy tratando de hacer que Safari siempre abra una nueva pestaña, incluso si es el mismo sitio web. Para su información, tengo alertas de existencias y abre automáticamente una nueva pestaña predeterminada del navegador cuando se encuentran existencias mediante Terminal; sin embargo, no abre nuevas pestañas correctamente como se describe anteriormente.

Respuestas (2)

Este comando de Terminal debería lograr lo que está buscando.

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'

Como el open comando no produce los resultados deseados, aquí hay una adaptación de mi respuesta A: Abra una URL en Safari con Navegación privada que le permitirá abrir fácilmente una URL desde la línea de comando en una nueva pestaña de una ventana de Safari , ya sea o no ya existe una pestaña con esa URL ..

Funciona independientemente de si Safari se está ejecutando o no, y si se está ejecutando, ya exista o no una ventana .

En Terminal , ejecute el siguiente comando compuesto :

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

Copie y pegue el código AppleScript de ejemplo , que se muestra a continuación, en el documento openurl abierto y, a continuación, guárdelo.

Luego debe mover el openurl script de shell a un directorio ubicado dentro del archivo PATH .

Lo moví a /usr/local/bin, por ejemplo,:

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

Ahora, desde la Terminal , puedo abrir la misma URL en una nueva pestaña de Safari , ya exista o no una pestaña con esa URL .

Escribir solo el nombre del ejecutable sin ningún argumento muestra cómo se puede usar, por ejemplo:

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

Ejemplo de código AppleScript :

#!/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


Nota: El código AppleScript de ejemplo es solo eso y, sin ningún manejo de errores incluido , no contiene ningún manejo de errores adicional que pueda ser apropiado. El usuario tiene la responsabilidad de agregar cualquier manejo de errores que sea apropiado, necesario o deseado. Eche un vistazo a la declaración de prueba y la declaración de error en la Guía del lenguaje AppleScript . Consulte también Trabajar con errores . Además, el uso del comando de retardo puede ser necesario entre eventos cuando corresponda, por ejemplo , con el valor del retardo delay 0.5establecer adecuadamente.