如何在终端上创建一个macOS替身?
How to create a macOS alias file in terminal?
最近一次系统更新导致系统崩溃,让我下决心解决掉这个坑:把程序移出 [/Application]
遇到的问题:
- 经常使用Launchpad,所以需要把 app/app链接 放入系统分区(如: [/Application] )才能在Launchpad显示
- 需要方便地将 app/app链接 放入 [/Application] ,因此采用shell脚本,一键执行。
- 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
- Software
- MyDrive
描述:
创建一个叫做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上更新。