3
#!/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

Mac のアプリケーション ディレクトリに muCommander をダウンロードして展開するためのシェル スクリプトを作成しようとしています。

tmp ディレクトリに cd しようとしましたが、そうするとスクリプトが停止します。-C 引数を使用してすべてを抽出できますが、現在の tgz パスは muCommander-0_9_0/mucommander.app であり、後のビルドで変更される可能性があるため、一般的なものにしようとしています。

誰かが私が間違っている場所を教えてもらえますか?

前もって感謝します。

4

2 に答える 2

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

「\」の後には改行が必要であり、スペースは使用できないことに注意してください...

于 2012-09-23T17:09:44.803 に答える
1

tar(1) から、アーカイブを untar するときに最初のパス コンポーネントを削除します。

 --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コマンドは今のところコメントアウトされています。使用する前に害がないことを確認してください。

于 2012-07-30T15:02:10.423 に答える