有什么方法可以在括号中获取前面文档的路径吗?
我尝试过的:
使用AppleScript,这适用于大多数代码编辑器,但不适用于括号:
tell window 1 to set thePath to value of attribute "AXDocument"
另一方面,我注意到在"窗口"菜单>"括号"(菜单栏(中,有类似以下内容:
/path/to/document.html (some-text) — Brackets
我只想得到路径,没有:(一些文本(— 括号
(请注意,(某些文本(我的意思是它是每台计算机中不同的文本。常见的情况是在 (( 内。
运行以下命令:
tell application "System Events" to ¬
get has scripting terminology of application process "Brackets"
返回:
false
因此,使用 AppleScript 编写括号脚本将受到限制;但是,以下示例AppleScript代码为我工作,以返回括号中的"窗口"菜单上文档名称显示的所需部分:
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
命令,如果在终端中使用,则用于它的正则表达式在.
前面只有一个反斜杠,以将其视为文字.
;但是,当使用do shell script
命令时,需要额外的反斜杠才能正确转义它。
"括号">中,在">工作文件"下打开并选择文档时,所选文档的"窗口"菜单上显示的名称始终menu item 7
,格式为:
/path/to/filename.ext (some text) — Brackets
使用grep -o
仅返回使用^.*.[[:alnum:]]*[^ ]
正则表达式的docPathName
变量中的匹配部分,它将返回所有内容,但不包括" (some text) — Brackets"
。
换句话说,它只返回"/path/to/filename.ext"
部分。
了解do shell script
命令:
grep
- 从其手册页:文件模式搜索器-o
- 仅打印行的匹配部分。^.*.[[:alnum:]]*[^ ]
- 请参阅下面的了解正则表达式:。
<<<
- 从bash
手册页: 此处字符串
此处文档的变体,格式为: <<<单词>单词
被展开并提供给其标准输入的命令。单词>
了解正则表达式:
^.*.[[:alnum:]]*[^ ]
^
- 断言字符串开头的位置。.
- 匹配任何字符(行终止符除外(。*
- 量词 — 零次和无限次之间的匹配,尽可能多地,根据需要回馈(贪婪(。.
- 从字面上匹配字符.
(区分大小写(。- 列表中存在的单个字符,匹配字母数字字符 [a-zA-Z0-9]。
*
- 量词 — 零次和无限次之间的匹配,尽可能多地,根据需要回馈(贪婪(。[^ ]
- 匹配列表中不存在的单个字符,从字面上匹配该字符(区分大小写(。
[[:alnum:]]
- 匹配
注意:示例AppleScript代码就是这样,不包含任何适当的错误处理。用户有责任添加任何适当、需要或想要的错误处理。请查看AppleScript 语言指南中的try语句和错误语句。另请参阅处理错误。