V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alswl
V2EX  ›  macOS

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

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

    我是一个更新癖,总是想体验软件的新版(入坑 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-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
        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   ·   实用小工具   ·   1318 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:46 · PVG 01:46 · LAX 09:46 · JFK 12:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.