我是一个更新癖,总是想体验软件的新版(入坑 Mac 之前,我是 Arch 用户)。
使用 brew cask 之后,我发现找不到一个 brew cask upgrade
命令,可以一键更新我的所有 App 。
于是我自己写了一个小脚本,用来检查软件的更新。
#!/bin/bash
for c in `ls /usr/local/Caskroom | grep -v "alfred" | grep -v flash` ; do
LATEST=`brew cask info $c | head -n 1 | awk '{print $2}'`
if [ `brew cask info $c | tail -n +2 | grep $LATEST | wc -l | awk '{print $1}'` -eq 0 ]; then
echo $c
fi
done
原理很简单,通过 brew cask info
的提示来匹配,获得结果之后还需要使用 brew cask install --force xxx yyy zzz
来安装一下。(你可以看到,穷逼的我过滤掉了 alfred 的升级,不想升级 3 )
由于 brew cask 有时候会调整命令返回结果,所以我会跟着持续维护这个脚本,感兴趣的同学可以直接拿: https://github.com/alswl/.oOo./blob/master/local/bin/check_brew_cask_upgrade
脚本局限性:
1
smallzhan 2016-11-06 16:58:43 +08:00
不错的东西,以前记得 brew cask install 一下,如果有升级会自动安装最新的。 10.12 后不行了。原来还可以用 info 来判断。
|
2
smallzhan 2016-11-06 17:05:18 +08:00
cask 的软件列表命令换成 brew cask list 可能更好。
|
3
alswl OP @smallzhan 你可以看我的 git 代码,里面其实有这个方案,但是 `brew cask list` 会在某些情况扫描不全,不如 `ls` 的办法来的可靠。
|
4
zander 2016-11-06 17:45:05 +08:00
万一 cask 那儿没更新,你打开 app 走 sparkle 更新到新版再走 cask 降级怎么办。
|
5
alswl OP @zander 这个脚本是通过 `brew cask info` 检测哪些可以升级,最终确认要升级哪些是用户自己决定的。
PS :一个解决方法是,完全不通过应用内自动升级来升级,只使用这个脚本升级。 这个脚本还有个问题,有些软件( Intelij IDEA )有内置 patch 升级方案,但是通过 `brew cask install` 升级,会完全下载。这个问题我的态度是,「不 care 」,只不过多用掉一些熵而已。 |
6
jsfaint 2016-11-07 07:51:29 +08:00
```
brew cask update for c in $(brew cask list); do ! brew cask info "$c" | grep -qF "Not installed" || brew cask install "$c" done ``` |
10
g67261831 2016-11-07 13:36:57 +08:00
|