我有一个 USB 调制解调器,插入后安装为 XYZ(其中包含拨号器软件和自述文件)。为了使用它进行连接,我必须将其弹出,然后使用 ppp 拨号器进行连接。
假设它以 /Volumes/XYZ 名称安装
我想要做一些事情,比如如果我插入一个 USB 设备并且它以名称 XYZ 挂载,我希望它立即被弹出。
我怎么做?
答案1
我曾经做过类似的事情,每当安装以某种方式命名的驱动器时,就会立即触发一个脚本,将一组文件夹的内容同步到该驱动器。
为了在这里做类似的事情,脚本需要看起来像这样:
#!/bin/bash
if [ -d /Volumes/XYZ ];
then
echo “Ejecting XYZ!”;
umount /Volumes/XYZ
exit;
fi
将其保存在某个地方,~/bin/
如果有的话,保存在您的目录下,或者也许~/Library/Scripts/
,只记住在哪里。
难题的第二个部分是 LaunchAgent,它实际上会在驱动器安装时处理事件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.226504.example</string>
<key>ProgramArguments</key>
<array>
<string>/Path/To/Script/unmount-modem.sh</string>
</array>
<key>QueueDirectories</key>
<array/>
<key>StartOnMount</key>
<true/>
<key>WatchPaths</key>
<array/>
</dict>
</plist>
需要将其保存为 .plist(名称类似于“com.superuser.226504.example”中所使用的字符串)并保存到~/Library/LaunchAgents
。您可以通过终端加载它launchctl load ~/Library/LaunchAgents/pathtoplist
,也可以注销/重新登录,如果一切配置正确,它应该会被加载。
答案2
您可以使用以下 AppleScript:
on adding folder items to this_folder after receiving added_items
set the item_count to the number of items in the added_items
if the item_count is greater than 1 then
display dialog "Multiple additions, I can't handle that!"
else
set the volume_name_raw to (item 1 of the items in the added_items as text)
set AppleScript's text item delimiters to ":"
set volume_name to text item 1 of volume_name_raw as text
if volume_name is "Carbon Copy Cloner" then
do shell script "hdiutil detach '/Volumes/" & volume_name & "'"
end if
end if
end adding folder items to
基于 Apple 的文件夹操作“新项目警报”
在以下行中更改要弹出的卷的名称:
if volume_name is "Carbon Copy Cloner" then
要激活它:
- 打开
/Applications/Utilities/AppleScript Editor
并粘贴上面的脚本。 - 将其保存为脚本(例如
eject.scpt
)~/Library/Scripts/Folder Action Scripts/
。 - 关闭 AppleScript 编辑器。
- 右键单击 Finder 中的任意文件夹,选择服务 » 文件夹操作设置
- 关闭工作表对话框。
- 查看启用文件夹操作
- 点击
+
左下角的按钮,然后Command-Shift-G
在出现的文件对话框中按下 Enter/Volumes
。不要选择项目,只需按 OK。 - 选择列表条目
Volumes
并单击+
右侧列表下方的按钮。 eject.scpt
在工作表对话框中选择并单击附- 关闭文件夹操作设置。
完毕!