【问题标题】:How do I use OSX's Folder Actions to execute a command in Terminal when a file is added to a folder?将文件添加到文件夹时,如何使用 OSX 的文件夹操作在终端中执行命令?
【发布时间】:2019-03-17 03:54:56
【问题描述】:

当文件添加到文件夹时,如何使用 OSX 的文件夹操作在终端中执行命令?我的理解是文件夹操作可以在将文件放入其中时触发 AppleScript。我试图修改一个示例“添加到文件夹”脚本,但它不起作用。

这是我想在文件夹中的任何 zip 文件上运行的确切终端命令(我知道这种语法是正确的):

for file in *.zip; do zip -d "$file" "__MACOSX*"; done; for file in *.zip; do zip -d "$file" "*.DS_Store"; done; unzip -l \*.zip 

我在脚本编辑器(2.10 版)中尝试了此代码,但语法不正确:

on adding folder items to theAttachedFolder after receiving theNewItems
    tell application Terminal
        for file in *.zip; do zip -d "$file" "__MACOSX*"; done; for file in *.zip; do zip -d "$file" "*.DS_Store"; done; unzip -l \*.zip 
    end tell
end adding folder items to

如果有帮助的话,下面是脚本在脚本编辑器中的样子:

什么是正确的语法?我正在运行 OSX 10.13.6。

PS:我已经看到Run a shell command when a file is added 以及其他几个类似的问题,但我对文件夹操作和 AppleScripts 太陌生,无法理解如何让它们在我的情况下工作。

【问题讨论】:

    标签: macos terminal applescript directory


    【解决方案1】:

    你需要使用语法:

    set currentTab to do script ("[command]")
    

    例如:

    tell application "Terminal"
        set currentTab to do script ("ls")
    end tell
    

    将列出当前目录。确保你也用引号包裹终端:“终端”

    【讨论】:

    • 实际上,这对“ls”有效,但对于我想要使用的长命令字符串,它不起作用。在第一个 $ 它说“语法错误:预期“,”但发现未知标记。另外,有没有我可以看的语法手册?我会用谷歌搜索什么?到目前为止我找不到任何东西。
    • 不要尝试使用终端,只需在 Applescript 中使用“执行 shell 脚本”指令即可。它直接从 AS 运行 shell 命令。因为您的文件夹似乎总是相同的,所以您可以将此文件夹路径硬编码到您的 shell 命令中。目前,您的 zip 命令未指定包含 .zip 的文件夹。请记住,AS,然后“执行 shell 脚本”不知道默认文件夹的含义。
    猜你喜欢
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2021-07-23
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多