#!/bin/bash
mkdir /tmp
curl -O http://www.mucommander.com/download/nightly/mucommander-current.app.tar.gz /tmp/mucommander.tgz
tar -xvzf /tmp/mucommander.tgz */mucommander.app/*
cp -r /tmp/mucommander.app /Applications
rm -r /tmp
我正在尝试创建一个shell脚本来下载并将muCommander解压缩到Mac上的应用程序目录。
我尝试了cd进入tmp目录,但是当我这样做时脚本停止了。 我可以使用-C参数提取所有内容,但是当前的tgz路径是muCommander-0_9_0 / mucommander.app,它可能会在以后的版本中更改,所以我试图保持它的通用性。
任何人都可以指点我出错的地方吗?
提前致谢。
答案 0 :(得分:1)
从tar(1)中解压缩归档时剥离第一个路径组件:
--strip-components count
(x mode only) Remove the specified number of leading path ele-
ments. Pathnames with fewer elements will be silently skipped.
Note that the pathname is edited after checking inclusion/exclu-
sion patterns but before security checks.
以下是一个有效的bash
示例,说明如何将tgz
文件的内容复制到/Applications
。
shopt -s nocaseglob
TMPDIR=/tmp
APP=mucommander
TMPAPPDIR=$TMPDIR/$APP
mkdir -p $TMPAPPDIR
curl -o $TMPDIR/$APP.tgz http://www.mucommander.com/download/nightly/mucommander-current.app.tar.gz
tar --strip-components=1 -xvzf $APP.tgz -C $TMPAPPDIR
mv $TMPAPPDIR/${APP}* /Applications
# rm -rf $TMPAPPDIR $TMPDIR/$APP
rm
命令暂时被注释掉,在使用之前验证它没有任何危害。
答案 1 :(得分:1)
以下内容将更新您的muCommander。
#for the safety, remove old temporary extraction from the /tmp
rm -rf /tmp/muCommander.app
#kill the running mucommander - you dont want replace the runnung app
ps -ef | grep ' /Applications/muCommander.app/' | grep -v grep | awk '{print $2}' | xargs kill
#download, extract, remove old, move new, open
#each command run only when the previous ended with success
curl http://www.mucommander.com/download/nightly/mucommander-current.app.tar.gz |\
tar -xzf - -C /tmp --strip-components=1 '*/muCommander.app' && \
rm -rf /Applications/muCommander.app && \
mv /tmp/muCommander.app /Applications && \
open /Applications/muCommander.app
请注意,'\'必须跟随新行,而不是任何空格......