【问题标题】:Launch Firefox Portable on Mac with a shell script使用 shell 脚本在 Mac 上启动 Firefox Portable
【发布时间】:2011-06-08 20:36:46
【问题描述】:

首先,请允许我声明我完全讨厌 Mac。我对他们没有什么经验,除了用 Objective-C 编程。

问题:我需要能够在闪存驱动器上的目录下启动便携式 Firefox 安装

[Drive root]/.assets/port/Firefox Portable.app

我可以得到一些帮助:

  1. 确保 shell 脚本接受文件夹名称中的空格和句点
  2. 确保 shell 脚本接受文件名中的空格
  3. 允许更改驱动器根目录,类似于 Windows 计算机上的前导“/”。

提前致谢。

【问题讨论】:

    标签: macos shell usb-drive


    【解决方案1】:

    这应该可以解决问题。

    cmd=$(ls -d /Volumes/*/.assets/port/Firefox\ Portable.app 2>/dev/null | head -1) && open "$cmd"
    

    将在 /Volumes 中所有已安装的驱动器上尝试 ls all Firefox,并启动第一个驱动器。 (当找不到任何 Firefox 时,什么也不做。)

    解释:

    • ls -d 在目录模式下尝试列表(所以列出目录名称而不是它的内容)
    • Firefox\ Portable 中的反斜杠 - 表示转义下一个字符,(此处为 space
    • 2>/dev/null - 不要显示错误(或者你也可以尝试2>&-
    • |head -1 - 只显示结果的第一行(如果这里有更多行)
    • 上面的所有内容都分配给变量cmd - 所以如果这里是一个命令,该变量将包含一个路径名
    • && open "$cmd" - 在上一个命令成功时打开存储在变量 $cmd 中的路径上的应用程序(所以这里是一个命令)

    【讨论】:

    • 不错。假设该路径在所有已安装的卷上都是唯一的并且您信任它并且它是一个格式正确的 Mac 应用程序,那么应该可以解决问题。
    • ;) 是的,你说得对。对于正确性,应检查 .../Content/MacOS/Firefox\ Portable 是否存在,并使用 lipo 命令获取正确的架构,然后打开.. ;)
    【解决方案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 驱动器除非该挂载点已被另一个类似-命名文件系统,在这种情况下,将使用修改后的挂载点名称,通常通过附加一些内容。或者您或某些程序可以在某个任意安装点手动安装它。因此,在最一般的情况下,您需要进行搜索。这取决于你想做什么。

    【讨论】:

    • 我用引号括起来了,还是失败(系统找不到 /.assets/port/Firefox )
    • 所以你是说不像windows,没有办法告诉它从驱动器根目录开始寻找文件?因为驱动器将安装在不同的位置,这取决于它插入的计算机,对吧?就像 PC 上的驱动器号一样?
    • 如果没有安装冲突的文件系统(具有相同文件系统卷名的文件系统),默认情况下它应该安装在每个 OS X 系统上的相同路径。因此,您应该能够在任何地方使用相同的文件路径。就像任何使用自动挂载程序的 Unix 系统一样,很难保证在所有可能的情况下都能正常工作,但如果这些是您的系统并且 USB 驱动器在您的控制之下,它应该可以正常工作。
    • 我不确定为什么引用的文件名会出现问题。您是直接在 OS X 终端窗口外壳中运行它,还是以某种方式远程运行它?另一种处理方法是使用\ 来保护空间,所以open [...]Firefox\ Portable.app
    猜你喜欢
    • 2011-01-11
    • 2020-11-20
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    相关资源
    最近更新 更多