脚本文件和创造者类型

Mac OS X brings together two worlds of scripting — traditional Mac OS AppleScript, and traditional Unix scripting (by which I mean anything that can start with “#!”, including both shell scripting and languages like Perl, Python, and Ruby)苹果公司一直非常重视支持两种类型的脚本,例如,系统级的脚本菜单同时支持。

布伦特西蒙斯也是一样的大猫的脚本,一个免费的上下文菜单插件,可以在两个不同的上下文中运行脚本 - 针对选定的文件,以及针对选定的文本。

The Big Cat plug-in adds a new “Scripts” sub-menu to your contextual menus; the contents of the Scripts sub-menu are the scripts you place in your~ /图书馆/应用支持/ /大猫脚本文件夹那个文件夹里面有两个文件夹,“文件”和“文本”The scripts you put in the Files folder are used when you control-click on one or more files; the scripts in Text are used when you control-click on a text selection in an app like BBEdit.

我不使用大猫文本脚本,但我几乎每天都用它的脚本文件有很多方法可以执行脚本文件选择,包括苹果的提到的脚本菜单,但大猫的上下文菜单既方便又快速。

其中一个任务,我用它来改变HFS文件和创造者类型元数据例如,把一个文本文件,并将其分配给在BBEdit开放,你会设置文件的创造者类型“R * CH”(你不妨将其文件类型设置为“文本虽然你在它)。

你能完成这个任务使用Mac OS X的任何脚本语言支持。

这里的一个AppleScript:

on main(file_list)
   repeat with this_file in file_list
      try
         tell application "Finder"
            set file type of file this_file to "TEXT"
            set creator type of file this_file to "R*ch"
         end tell
      on error error_message
         display dialog error_message
      end try
   end repeat
end main

main()handler is Big Cat’s convention; the selected files are passed to this handler as a list.

这里有一个tcsh shell脚本:

#!/bin/tcsh
while ("$*" != "")
    /Developer/Tools/SetFile -t "TEXT" -c "R*ch" "$1"
    shift
end

这在Perl中:

#!/usr/bin/perl
use strict;
use warnings;
use MacPerl;
MacPerl::SetFileInfo("R*ch", "TEXT", @ARGV);

纯粹的语言语法而言,我更喜欢Perl版本(So shoot me.) But the AppleScript version is the only one that will work on a stock Mac OS X installationshell脚本版本使用SetFile工具,它只存在如果你安装了Mac OS X开发工具Perl版本要求MacPerl模块,进而不仅需要Mac OS X开发工具,但也知道如何从CPAN安装Perl模块

但即使你安装了开发工具,了解CPAN AppleScript版本有一个优势——仪需要注意的脚本所做的记得上周,当我写了一篇关于推动, Rainer Brockerhoff’s contextual menu plug-in that convinces the Finder to update its file views, which is occasionally necessary because the Finder sometimes doesn’t notice when items have changed? Well, one of the many ways the Finder’s views can fall out of sync with the file system is when changes are made at the command-line level.

So, for example, take a file named index.html, which has no file or creator type associated with it因此,它的“所有权”是由文件名扩展,这一个. html文件可能意味着它是属于你喜欢的web浏览器如果你使用一个shell或Perl脚本改变文件和创造者类型,文件的图标,显示的发现者,不会改变Finder最终会发现——就像如果你切换到另一个应用程序,或者如果你点击窗口中的另一个文件,然后再次单击文件的元数据就变了但是,运行一个说“将其设为BBEdit文本文件”的脚本非常不满意,但是没有立即更改文件的图标以反映脚本实际按预期工作。

AppleScript版本,你没有这个问题Finder显然注意到文件的元数据已经改变,因为它是仪本身改变了文件的创造者和文件类型信息。

所以,即使在这种情况下,我觉得需要更少的时间为我写一个使用Perl脚本,我将使用调用脚本的AppleScript相反如果我计划从大猫的上下文菜单。