一个通过 brew cask 自动检查 App 更新软件的脚本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alswl
V2EX    macOS

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

  •  
  •   alswl 2016-11-06 15:30:49 +08:00 7367 次点击
    这是一个创建于 3281 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    脚本局限性:

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

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

    这个脚本还有个问题,有些软件( Intelij IDEA )有内置 patch 升级方案,但是通过 `brew cask install` 升级,会完全下载。这个问题我的态度是,「不 care 」,只不过多用掉一些熵而已。
    jsfaint
        6
    jsfaint  
       2016-11-0707: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
        7
    alswl  
    OP
       2016-11-07 09:33:11 +08:00 via iPhone   1
    @jsfaint 这是上个版本的
    jsfaint
        8
    jsfaint  
       2016-11-07 09:54:55 +08:00
    @alswl 忘记之前在哪儿看到的了~原来你是原作者呀。赞一个
    alswl
        9
    alswl  
    OP
       2016-11-07 12:37:28 +08:00
    @jsfaint 并不是原作者,
    g67261831
        10
    g67261831  
       2016-11-07 13:36:57 +08:00
    jsfaint
        11
    jsfaint  
       2016-11-07 13:56:24 +08:00
    @alswl 不是也赞~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2625 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:19 PVG 21:19 LAX 06:19 JFK 09:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86