Answers:
最简单的,内置的方式做,这是刚刚从拖动物品查找到一个终端窗口。当您放置它们时,终端将“键入”其(转义的)路径名。然后,您可以使用Shell的命令行编辑来输入其余命令。或者,如果您正在考虑,可以先键入命令,然后将其拖入项目。
“先拖拽”版本:
“超前思维”版本:
如果您需要更多的自动化解决方案,则可以(如其他答案所示)转向AppleScript或Automator。由于额外的“活动部件”可能会增加解决方案的复杂性,因此您必须权衡上述过程(手动但灵活)的好处与实现一个或多个自动化解决方案的复杂性。
一些自动化的可能性包括:
.command
文件(通常是shell脚本;在Finder中打开以在Terminal中运行它)
服务是osx处理此类事情的方式。
在应用程序菜单(在这种情况下,“搜索”)有(几乎)总是一个Services
菜单选项,这将提供适用于当前的应用服务和其当前状态。通常,状态是所选对象的类型(文本,文件/文件夹等)。
可以在“系统偏好设置”面板中启用,禁用和分配键盘快捷键,这些快捷键仅对这三个中的最后一个有意义Keyboard
。
要制作将外壳程序脚本应用于Finder中文件/文件夹的服务,请执行以下操作:
启动automator并创建一个新Service
类型的文档。
files or folders
)Get Selected Finder Items
动作。Run Shell Script
它看起来应该像这样:
~/Library/Services
保存时,automator会自动将其放置在您的文件夹中,这将通过Application -> Services
菜单或上下文(单击右键)菜单立即(几乎)使它可用。
根据上面的答案,我构建了这个东西
https://github.com/commonpike/DropShell
基本上,是一个applescript应用程序,该应用程序使用放置的文件作为参数来调用位于该应用程序中的shellfile。您可以根据需要修改Shell脚本。
根据commonpike的回答,我创建了一个AppleScript,它将所有放置在其上的文件重定向到具有匹配名称的Shell脚本。只需从Apple的ScriptEditor中保存为应用程序,然后将其重命名为script.app以匹配您的script.sh https://github.com/PHolker/scripts/blob/master/DropScript.scpt
在Mac OS X中,首选的脚本语言是Applescript。您可以创建一个droplet(一个脚本,当您将一些文件拖放到其图标上时会执行某些操作),将该脚本(可以另存为应用程序)图标放置在桌面上,然后将您想要传递的文件拖放到桌面上。脚本。
或者,您可以使用文件夹操作。可以将脚本Applescript关联到一个文件夹,该文件夹将在某些文件(或目录)放置在该文件夹上时始终执行。
我也一直想这样做,但是与上面的解决方案不同,我想为shell脚本生成带引号的参数。其他方法很好,但是它们有点像在您真正想要的时候建议“只是将命令-v插入终端” pbpaste
。
我想制作一个可以在脚本中使用的shell函数,该脚本扩展为每个Finder选择的文件参数。我使用鱼壳,这似乎有些起作用:
function selection
osascript -e "tell application \"Finder\" to set s to the selection as alias list" -e "repeat with f in s" -e "set contents of f to POSIX path of f" -e "end repeat" -e "set AppleScript's text item delimiters to linefeed" -e "s as string"
end
再次使用(同样在鱼壳中)convert-video (selection)
。
在bash函数中,可能需要在输出中引用该| tr '\n' '\0' | xargs -0 printf "%q" {}
osascript命令末尾的内容(不确定)。
(请注意:我在过去2小时内重新学习了有关高级Applescript和Shell脚本的所有知识,到明天将会忘记)