首先,请允许我声明我完全厌恶Mac。我对它们的经验很少,除了在Objective-C中编程。
问题:我需要能够在闪存驱动器上的目录
下启动便携式firefox安装[Drive root]/.assets/port/Firefox Portable.app
我可以获得一些帮助:
提前致谢。
答案 0 :(得分:2)
在OS X上,open(1)
用于从命令行启动应用程序:
open "[/Volumes/[Drive file system name]/.assets/port/Firefox Portable.app"
与任何标准Unix shell一样,将路径括在引号" "
中可以防止空格和句点。
对于给定的闪存驱动器,除非您更改它,否则卷文件系统名称将始终相同。如果您事先不知道文件系统名称是什么,则需要搜索已安装的卷并猜测。
更准确地说,默认情况下,OS X将尝试使用/Volumes/[Drive file system name]
安装点上的相同文件系统安装USB驱动器,除非该安装点已被另一个使用类似命名的文件系统,在这种情况下,将使用修改的挂载点名称,通常通过附加内容。或者您或某些程序可以在某个任意挂载点手动挂载它。因此,在最一般的情况下,您需要搜索。这取决于你想要做什么。
答案 1 :(得分:2)
这应该可以解决问题。
cmd=$(ls -d /Volumes/*/.assets/port/Firefox\ Portable.app 2>/dev/null | head -1) && open "$cmd"
将在/ Volumes中的所有已安装驱动器上尝试ls
所有Firefox,并将启动第一个。 (什么都不做,什么时候找不到任何Firefox。)
说明:
ls -d
在目录模式下尝试列表(所以列出目录名而不是它的内容)Firefox\ Portable
中的反冲尾 - 意味着转义下一个字符,(此处为space
)2>/dev/null
- 不要显示错误(或者您也可以尝试2>&-
)|head -1
- 仅显示结果中的第一行(如果这里有更多行)cmd
- 所以如果这是一个命令,变量将包含路径名&& open "$cmd"
- 在上一个命令成功的时候打开存储在变量$ cmd中的路径上的应用程序(所以这是一个命令)