我正在尝试在 Automator 中创建一个服务来在我的 USB 密钥上运行一个程序(作为右键单击服务运行)。
这是我需要运行的 bash shell 脚本
diskutil unmount /Volumes/KINGSTON
fatsort -f -oa /dev/disk1s1
两条路径
/Volumes/KINGSTON
和 /dev/disk1s1
应被视为变量,由 Automator 进行评估。
我得到第一个“获取选定的 Finder 元素”,然后将 shell 脚本设置为 $1
I.E.
diskutil unmount $1
但是我不知道如何获取/dev路径
我知道这是一个非常古老的问题,但我也遇到了同样的问题。命令
diskutil unmount VOLUME
返回“未安装的 DEVICENODE 上的卷 VOLUME”。所以步骤是:
diskutil
命令的输出。/dev/
添加到文本前面。我就是这样做的:
DEVPATH=$(diskutil unmount /Volumes/KINGSTON)
#remove the text in front of the device node
DEVPATH=${DEVPATH//Volume KINGSTON on /}
#remove the text at the end of the device node
DEVPATH=${DEVPATH// unmounted/}
#if the remaining text begins "disk", that is the device node
if [[ $DEVPATH == disk* ]] ; then
DEVPATH=/dev/$DEVPATH
sudo fatsort -n $DEVPATH
diskutil eject $DEVPATH
else
echo UNABLE TO GET DEVICE NODE FOR /Volumes/KINGSTON FROM $DEVPATH
fi
由于卷名称可能会有所不同,我还使用了一个变量来保存卷:
SDHC="NAME"
SDPATH="/Volumes/$SDHC"
DEVPATH=$(diskutil unmount $SDPATH)
#remove the text in front of the device node
DEVPATH=${DEVPATH//Volume $SDHC on /}
#remove the text at the end of the device node
DEVPATH=${DEVPATH// unmounted/}
#if the remaining text begins "disk", that is the device node
if [[ $DEVPATH == disk* ]] ; then
DEVPATH=/dev/$DEVPATH
sudo fatsort -n $DEVPATH
diskutil eject $DEVPATH
else
echo UNABLE TO GET DEVICE NODE FOR $SDPATH FROM $DEVPATH
fi