如何在finder中使用选定的文件/文件夹执行shell脚本?

Jer*_*ell 15 finder script terminal macos

我来自 Linux,在那里很容易针对 nautilus 或 dolphin 中的一组文件运行脚本,但我有点惊讶地发现这在 OSX 中并不容易。

最好,我希望能够在 finder 中按住 ctrl 单击某些选择,选择我的脚本,然后弹出一个终端窗口以显示进度或任何用户交互。

Chr*_*sen 8

最简单的,内置的方式做,这是刚刚从拖动物品查找到一个终端窗口。当你放下它们时,终端将“输入”它们的(转义)路径名。然后,您可以使用 shell 的命令行编辑来输入命令的其余部分。或者,如果您提前考虑,您可以先输入命令,然后拖入项目。

“先拖动”版本:

  1. 选择一些Finder项目并将其拖到显示 shell 提示的终端窗口。终端将插入(转义)路径名。
  2. 键入Control+ A(转到行的开头;?A 是默认值,但因外壳/配置而异)。
  3. 键入您的命令和一个空格(它将被插入到路径名之前)。

“超前思考”版本:

  1. 以任何顺序,同时执行以下两项操作:
    • 终端窗口中,键入命令的初始部分和空格(除路径名外的所有内容)。
    • Finder 中选择一些项目。
  2. 将所选项目从Finder 拖到您键入命令的终端窗口。
  3. 激活终端窗口并按Return

如果您需要更多更自动化的解决方案,您可以(如其他答案所示)转向 AppleScript 或 Automator。由于额外的“移动部件”会给解决方案增加一些复杂性,因此您必须权衡上述过程(手动但灵活)的好处与实施一个或多个自动化解决方案的复杂性。

一些自动化可能性包括:

  • 一个 AppleScript Droplet 应用程序
  • 由内置脚本菜单或其他启动器启动的普通 AppleScript 程序
    • Finder的选择中获取路径名
  • Automator 工作流程、应用程序或Finder插件
  • 一个可执行.command文件(通常是一个 shell 脚本;在Finder 中打开以在终端中运行它)
    • Finder的选择中获取路径名(通过osascript
  • 一些已经提供您需要的功能的第三方工具


小智 7

我认为没有办法直接做到这一点。您可以构建一个“Automator”应用程序,该应用程序将执行您所寻求的某些操作。这显示了 Automator 堆栈的样子:

在此处输入图片说明

将结果保存为应用程序,然后在查找器中选择文件,右键单击并选择“打开方式”,然后选择您的应用程序。(您可能需要在应用程序列表底部选择“其他...”。)

您无法使用此方法与脚本交互,但您可以遍历文件以执行一些 shell 脚本。


Lak*_*ake 6

服务处理这类事情的方式。

在应用程序菜单(在这种情况下,“搜索”)有(几乎)总是一个Services菜单选项,这将提供适用于当前的应用服务其当前状态。通常状态是选择的对象类型(文本、文件/文件夹等)。

可以在“系统偏好设置”面板中启用、禁用和分配键盘快捷键,这仅对这三个中的最后一个有意义,Keyboard.

键盘快捷键

要创建将 shell 脚本应用于 Finder 中的文件/文件夹的服务:

启动并制作一个新Service类型的文档。

新服务

  • 设置服务适用的对象类型 ( files or folders)
  • 设置服务可用的应用程序(
    • 或者有一个Get Selected Finder Items动作。
  • 添加一个动作 Run Shell Script
  • 决定你想要输入作为参数还是

它应该是这样的:

示例外壳脚本

~/Library/Services在您保存时自动将其放置在您的文件夹中,这将使其(几乎)立即通过Application -> Services菜单或上下文(右键单击)菜单可用。

测试文件夹

生成的 TextEdit 文档