一个通过 brew cask 自动检查 App 更新软件的脚本

2016-11-06 15:30:49 +08:00
 alswl

我是一个更新癖,总是想体验软件的新版(入坑 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

脚本局限性:

6708 次点击
所在节点    macOS
11 条回复
smallzhan
2016-11-06 16:58:43 +08:00
不错的东西,以前记得 brew cask install 一下,如果有升级会自动安装最新的。 10.12 后不行了。原来还可以用 info 来判断。
smallzhan
2016-11-06 17:05:18 +08:00
cask 的软件列表命令换成 brew cask list 可能更好。
alswl
2016-11-06 17:38:00 +08:00
@smallzhan 你可以看我的 git 代码,里面其实有这个方案,但是 `brew cask list` 会在某些情况扫描不全,不如 `ls` 的办法来的可靠。
zander
2016-11-06 17:45:05 +08:00
万一 cask 那儿没更新,你打开 app 走 sparkle 更新到新版再走 cask 降级怎么办。
alswl
2016-11-06 18:07:13 +08:00
@zander 这个脚本是通过 `brew cask info` 检测哪些可以升级,最终确认要升级哪些是用户自己决定的。

PS :一个解决方法是,完全不通过应用内自动升级来升级,只使用这个脚本升级。

这个脚本还有个问题,有些软件( Intelij IDEA )有内置 patch 升级方案,但是通过 `brew cask install` 升级,会完全下载。这个问题我的态度是,「不 care 」,只不过多用掉一些熵而已。
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
```
alswl
2016-11-07 09:33:11 +08:00
@jsfaint 这是上个版本的
jsfaint
2016-11-07 09:54:55 +08:00
@alswl 忘记之前在哪儿看到的了~原来你是原作者呀。赞一个
alswl
2016-11-07 12:37:28 +08:00
@jsfaint 并不是原作者,😂
g67261831
2016-11-07 13:36:57 +08:00
jsfaint
2016-11-07 13:56:24 +08:00
@alswl 不是也赞~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/318485

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX