为了计算下载文件的 SHA1 校验和,我可以输入
/usr/bin/openssl sha1
在终端中,然后将要检查的文件拖到那里。为了更简单,可以为此操作启用上下文菜单项。
在 Mac OS X 10.6 中创建此类项目的最佳方法是什么? 非常感谢您的详细回答,因为我对 AppleScript 等没有很好的经验。
一步步
- 打开 Automator
- 创建新服务
- 选择在 Finder 中接收选定的文件和文件夹
- 添加操作运行 Shell 脚本,其中您的 bash 命令
/usr/bin/openssl sha1 "$@"
并将输入作为参数传递
我如何获取输出?最好是在 Growl 弹出窗口或消息窗口/对话框中。
答案1
- 打开 Automator
- 创建新服务
- 选择在 Finder 中接收选定的文件和文件夹(注意:这实际上对文件夹不太有效......)
添加操作运行 Shell 脚本,将 Shell 设置为 /bin/bash 并将输入传递给“作为参数”,然后输入此脚本:
for file; do if [[ -d "$file" ]]; then echo "$(basename "$file") is a directory" else cd "$(dirname "$file")" /usr/bin/openssl sha1 "$(basename "$file")" fi done | tr "\n" "\r"
添加操作运行Applescript,并输入此脚本:
on run {input, parameters} tell application "System Events" activate display dialog input buttons {"OK"} default button 1 end tell end run
使用描述性名称保存服务
答案2
我以 Gordon 的出色回答为起点,并对其进行了少许润色。将这些更改发布在这里,以防其他人发现它们有用。我的版本计算 MD5 以及 SHA1 哈希值(以更易读的格式),如果您忘记单击“确定”按钮,而不是抛出 AppleScript 错误,5 分钟后也会超时。
Shell 脚本
for file; do
if [[ -d "$file" ]]; then
echo "$(basename "$file") is a directory"
else
cd "$(dirname "$file")"
echo -e "$(basename "$file")\r"
echo -n "MD5: "
/usr/bin/openssl md5 "$(basename "$file")" | egrep -o [a-f0-9]{32}
echo -n "SHA1: "
/usr/bin/openssl sha1 "$(basename "$file")" | egrep -o [a-f0-9]{40}
fi
done | tr "\n" "\r"
苹果脚本
on run {input, parameters}
with timeout of 360 seconds
tell application "System Events"
activate
display dialog input buttons {"OK"} default button 1 with title "Cryptographic Hashes" giving up after 300 --seconds
end tell
end timeout
end run