在 MacOS 上通过终端打开 .html 文件时设置目标
Set target when open .html file via terminal on MacOS
有 this solved topic 关于通过命令行打开 .html 文件。
我使用了这个解决方案,它很适合使用
open ./myfile.html
但是,它总是在新选项卡中打开文件。我想始终在同一个选项卡中打开它(使用浏览器目标)。这在 JavaScript 中很容易做到,但我想不出结合上述代码的方法。
我现在的假设是,必须有一种方法可以将目标作为参数传递给打开命令。 man open
显示参数 --args
的以下内容:
All remaining arguments are passed to the opened application in the
argv parameter to main(). These arguments are not opened or
interpreted by the open tool.
所以我尝试了以下方法:
open ./myfile.html --args target=myfile_target # still opens in new tab
open ./myfile.html --args target="myfile_target" # still opens in new tab
open ./myfile.html --args target:myfile_target # still opens in new tab
我不确定这是否有效,但我认为一定有办法做到这一点。
编辑:现在用 chrome 就足够了。
此 Bash 脚本结合了一些 AppleScript 以便打开浏览器 window 并带有参考,脚本可以跟踪并继续以正在进行的 URL 请求为目标.
您应该能够将其复制并粘贴到文本编辑器中,并将其保存为您希望调用此替换 open
函数的任何名称。我将它保存为 url
,在我的 $PATH
变量中列出的目录之一中。这样,我可以简单地从命令行输入 url dropbox.com
,它会 运行.
您必须先使其可执行,然后才能执行此操作。所以,保存后,运行 这个命令:
chmod +x /path/to/file
那么你应该可以开始了。如果您遇到任何错误,请告诉我,我会修复它们。
#!/bin/bash
#
# Usage: url %file% | %url%
#
# %file%: relative or absolute POSIX path to a local .html file
# %url%: [http[s]://]domain[/path/etc...]
IFS=''
# Determine whether argument is file or web address
[[ -f "" ]] && \
_URL=file://$( cd "$( dirname "" )"; pwd )/$( basename "" ) || \
{ [[ == http* ]] && _URL= || _URL=http://; };
# Read the value on the last line of this script
_W=$( tail -n 1 "[=11=]" )
# Open a Safari window and store its AppleScript object id reference
_W=$( osascript \
-e "use S : app \"safari\"" \
-e "try" \
-e " set S's window id $_W's document's url to \"$_URL\"" \
-e " return $_W" \
-e "on error" \
-e " S's (make new document with properties {url:\"$_URL\"})" \
-e " return id of S's front window" \
-e "end try" )
_THIS=$( sed $d "[=11=]" ) # All but the last line of this script
echo "$_THIS" > "[=11=]" # Overwrite this file
echo -n "$_W" >> "[=11=]" # Appened the object id value as final line
exit
2934
有 this solved topic 关于通过命令行打开 .html 文件。
我使用了这个解决方案,它很适合使用
open ./myfile.html
但是,它总是在新选项卡中打开文件。我想始终在同一个选项卡中打开它(使用浏览器目标)。这在 JavaScript 中很容易做到,但我想不出结合上述代码的方法。
我现在的假设是,必须有一种方法可以将目标作为参数传递给打开命令。 man open
显示参数 --args
的以下内容:
All remaining arguments are passed to the opened application in the argv parameter to main(). These arguments are not opened or interpreted by the open tool.
所以我尝试了以下方法:
open ./myfile.html --args target=myfile_target # still opens in new tab
open ./myfile.html --args target="myfile_target" # still opens in new tab
open ./myfile.html --args target:myfile_target # still opens in new tab
我不确定这是否有效,但我认为一定有办法做到这一点。
编辑:现在用 chrome 就足够了。
此 Bash 脚本结合了一些 AppleScript 以便打开浏览器 window 并带有参考,脚本可以跟踪并继续以正在进行的 URL 请求为目标.
您应该能够将其复制并粘贴到文本编辑器中,并将其保存为您希望调用此替换 open
函数的任何名称。我将它保存为 url
,在我的 $PATH
变量中列出的目录之一中。这样,我可以简单地从命令行输入 url dropbox.com
,它会 运行.
您必须先使其可执行,然后才能执行此操作。所以,保存后,运行 这个命令:
chmod +x /path/to/file
那么你应该可以开始了。如果您遇到任何错误,请告诉我,我会修复它们。
#!/bin/bash
#
# Usage: url %file% | %url%
#
# %file%: relative or absolute POSIX path to a local .html file
# %url%: [http[s]://]domain[/path/etc...]
IFS=''
# Determine whether argument is file or web address
[[ -f "" ]] && \
_URL=file://$( cd "$( dirname "" )"; pwd )/$( basename "" ) || \
{ [[ == http* ]] && _URL= || _URL=http://; };
# Read the value on the last line of this script
_W=$( tail -n 1 "[=11=]" )
# Open a Safari window and store its AppleScript object id reference
_W=$( osascript \
-e "use S : app \"safari\"" \
-e "try" \
-e " set S's window id $_W's document's url to \"$_URL\"" \
-e " return $_W" \
-e "on error" \
-e " S's (make new document with properties {url:\"$_URL\"})" \
-e " return id of S's front window" \
-e "end try" )
_THIS=$( sed $d "[=11=]" ) # All but the last line of this script
echo "$_THIS" > "[=11=]" # Overwrite this file
echo -n "$_W" >> "[=11=]" # Appened the object id value as final line
exit
2934