如何用命令行创建macOS替身

如何在终端上创建一个macOS替身?
How to create a macOS alias file in terminal?

最近一次系统更新导致系统崩溃,让我下决心解决掉这个坑:把程序移出 [/Application]

遇到的问题:

  1. 经常使用Launchpad,所以需要把 app/app链接 放入系统分区(如: [/Application] )才能在Launchpad显示
  2. 需要方便地将 app/app链接 放入 [/Application] ,因此采用shell脚本,一键执行。
  3. unix 的 ln -s 虽然可以创建软链,但是创建出来的软链无法在Launchpad中显示,而且软链会因为移动源文件的位置后失效(比如以后要对源app文件夹分类)

解决方法:

注意 这是一行代码
osascript -e 'tell application "Finder" to make alias file to POSIX file "/Volumes/MyDrive/Software/Opera.app" at POSIX file "/Applications"'
描述:

使用 osascript 调用系统Finder程序,从不同于系统分区的位置 [/Volumes/MyDrive/Software/Opera.app] ,创建一个替身到[/Application] 下面


最终脚本:

目录准备:
  • Volumes
    • MyDrive
      • Software
        • Opera.app
        • Google Chrome.app
        • Firefox.app
        • install.sh
描述:

创建一个叫做MyDrive的分区,在分区下创建一个Software的文件夹,文件夹内存放app程序,以及 install.sh 脚本

脚本内容:
#!/bin/bash
set -e
cd "$(dirname "$0")/"
ROOT_PATH=$(pwd -P)

for src in $(find "$ROOT_PATH" -maxdepth 1 -name '*.app' -not -path '*.git*' | sed 's/ /-/g')
    do
    SOURCE_PATH=$(echo ${src}|sed s'/-/ /g')
    DESTINATION_FOLDER="/Applications"
    osascript -e "tell application \"Finder\" to make alias file to POSIX file \"$SOURCE_PATH\" at POSIX file \"$DESTINATION_FOLDER\""
done
使用方式:
1. 重装系统
2. chmod +x install.sh,双击图标执行 或者 终端中执行 ./install.sh
缺点:

无法处理pkg安装的程序,

脚本缺点:循环处理.app文件,遇到空格并不是用IFS,而是直接替换字符串实现,存在问题
待改进:

重装系统后虽然容易实现“恢复app”这个概念,但是app对应的配置文件,数据等丢失。需要建立起每个app对应配置文件的dotfile,在github上更新。

参考文章:https://discussions.apple.com/thread/1041148

你可能感兴趣的:(如何用命令行创建macOS替身)