有一个关于通过命令行打开.html文件的已解决的主题。
我使用该解决方案,它非常适合使用
open ./myfile.html
但是,它始终在新选项卡中打开文件。我想始终在同一选项卡中打开它(使用浏览器目标(。这在 JavaScript 中很容易做到,但我无法找到一种结合上述代码的方法。
我现在的假设是,必须有一种方法可以将目标作为参数传递给 open 命令。man open
显示了参数--args
的以下内容:
所有剩余的参数都将传递到打开的应用程序 argv 参数到 main((。 这些参数未打开或 由打开工具解释。
所以我尝试了以下方法:
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,以便打开一个带有引用的浏览器窗口,该脚本可以跟踪并继续针对正在进行的 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 "$1" ]] &&
_URL=file://$( cd "$( dirname "$1" )"; pwd )/$( basename "$1" ) ||
{ [[ $1 == http* ]] && _URL=$1 || _URL=http://$1; };
# Read the value on the last line of this script
_W=$( tail -n 1 "$0" )
# 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 "$0" ) # All but the last line of this script
echo "$_THIS" > "$0" # Overwrite this file
echo -n "$_W" >> "$0" # Appened the object id value as final line
exit
2934