文档路径。土坯括号

Path to document. Adobe Brackets

有什么办法可以得到Brackets中前面文档的路径吗?

我尝试过的:

对于 AppleScript,这适用于大多数代码编辑器,但不适用于 Brackets:

tell window 1 to set thePath to value of attribute "AXDocument"

另一方面,我注意到在括号(菜单栏)> Window 菜单中有类似的内容:

/path/to/document.html (some-text) — Brackets

我只想获取路径,没有:(some-text) — Brackets

(请注意,(some-text) 我的意思是它是在每台计算机上不同的文本。常见的情况是在 () 内。

运行 以下:

tell application "System Events" to ¬
    get has scripting terminology of application process "Brackets"

Returns:

false

因此,使用 AppleScript 编写脚本 Brackets 将受到限制;然而,下面的 example AppleScript code 为我工作 return 想要的部分文档名称Window菜单中括号的显示内容:

tell application "System Events" to set menuItemName to ¬
    (name of menu item 7 of menu 1 of menu bar item ¬
        "Window" of menu bar 1 of application process "Brackets")

set docPathName to do shell script ¬
    "grep -o '^.*\.[[:alnum:]]*[^ ]'<<<" & ¬
    quoted form of menuItemName

return docPathName

注意grep命令,如果在Terminal中使用,则[=80=用于它的 ]regex 在 . 之前只有一个 反斜杠 以将其转义以将其视为文字 .;但是,当使用 do shell script 命令 时,需要额外的 反斜杠 才能正确转义它。


Brackets 中,在 Working Files 下打开并选择一个文档,name在所选文档的 Window 菜单上显示的始终是 menu item 7 并且格式为:

/path/to/filename.ext (some text) — Brackets

Using grep -o to return 仅 docPathName variable 中匹配的部分 ^.*\.[[:alnum:]]*[^ ] 正则表达式,它将return所有内容,但不包括" (some text) — Brackets"

换句话说,它只是 return 的 "/path/to/filename.ext" 部分。

了解do shell script 命令:

  • grep - 来自其手册页:文件模式搜索器
    • -o - 仅打印行的匹配部分。
    • ^.*\.[[:alnum:]]*[^ ] - 请参阅下面的了解正则表达式。
  • <<< - 来自bash 手册页:Here Strings
    here文档的变体,格式为:<< <word
    word 被扩展并提供给命令的标准输入。

了解正则表达式:

  • ^.*\.[[:alnum:]]*[^ ]
    • ^ - 声明字符串开头的位置。
    • . - 匹配任何字符(行终止符除外)。
    • * - 量词——在零次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)。
    • \. - 按字面匹配字符 .(区分大小写)。
    • [[:alnum:]] - 匹配列表中存在的单个字符,匹配字母数字字符 [a-zA-Z0-9]。
    • * - 量词——在零次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)。
    • [^ ] - 匹配列表中不存在的单个字符,按字面匹配字符 (区分大小写)。



注意:示例 AppleScript code 就是这样,不包含任何可能适当的 error 处理。用户有责任根据需要添加任何 错误处理 。看看 try statement and error statement in the AppleScript Language Guide. See also, Working with Errors.