Macでファイルをダウンロードおよび解凍するためのBASHスクリプトを作成するにはどうすればよいですか?

私は、Mac上で動作するbashスクリプトを作成する必要があります。サイトのZIPファイルをダウンロードし、特定の場所に解凍する必要があります。

  1. ZIPファイルをダウンロードする( curl -O
  2. ファイルを特定の場所に解凍します( unzip filename.zip path/to/save )。
  3. .zipファイルを削除する

デスクトップ上のテキストファイルをダブルクリックすると、自動的にターミナルで実行されるようにする必要があります。

ユーザーがデスクトップ上のアイコンをダブルクリックして実行できるようにするにはどうすればよいですか?ファイルにはどのような拡張機能が必要ですか?

13
このファイルには .cmd 拡張子が必要です。
追加された 著者 the Tin Man,
curl -L http://example.org/file.zip | bsdtar -xvf -C/path/to/save
追加された 著者 davidcondrey,
.commandも同様に動作します。
追加された 著者 alecwhardy,

3 答え

OSXはLinuxと同じGNU sh/bashを使用しています

#!/bin/sh

mkdir /tmp/some_tmp_dir                         && \
cd /tmp/some_tmp_dir                            && \
curl -sS http://foo.bar/filename.zip > file.zip && \
unzip file.zip                                  && \
rm file.zip

最初の行#!/ bin/sh は「シバン」行と呼ばれ、必須です

20
追加された
ファイルの先頭に set -e を追加し、ダウンロードできなかった場合にスクリプトを終了するにはcurlコマンドに fail します。
追加された 著者 Joscha,
file.zipを作成せずにカール結果を直接unzipにパイプすることは可能ですか?
追加された 著者 PoGibas,
デフォルトでは、 wget はMac OSにインストールされていません。 curl はです。
追加された 著者 the Tin Man,
進行状況を見るのが好きな場合は、無音の -sS フラグを使用しないでください
追加された 著者 Aras,
カールに変更
追加された 著者 zed_0xff,
正しい方法は、カール-Oです
追加された 著者 alecwhardy,

BSD Tarはzipファイルを開き、ストリームを通して解凍することができます。したがって、次のように動作します:

curl http://example.org/file.zip | tar -xf - -C path/to/save
13
追加された
ファイルはtarファイルでなければなりません。 tar:これはtarアーカイブのようには見えません
追加された 著者 Anthony Hatzopoulos,

ディレクトリコンテキストを変更したくない場合は、次のスクリプトを使用します。

#!/bin/bash

unzip-from-link() {
 local download_link=$1; shift || return 1
 local temporary_dir

 temporary_dir=$(mktemp -d) \
 && curl -LO "${download_link:-}" \
 && unzip -d "$temporary_dir" \*.zip \
 && rm -rf \*.zip \
 && mv "$temporary_dir"/* ${1:-"$HOME/Downloads"} \
 && rm -rf $temporary_dir
}

使用法:

# Either launch a new terminal and copy `git-remote-url` into the current shell process, 
# or create a shell script and add it to the PATH to enable command invocation with bash.

# Place zip contents into '~/Downloads' folder (default)
unzip-from-link "http://example.com/file.zip"

# Specify target directory
unzip-from-link "http://example.com/file.zip" "/your/path/here"

出力:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17.8M  100 17.8M    0     0  22.6M      0 --:--:-- --:--:-- --:--:-- 22.6M
Archive:  file.zip
  inflating: /tmp/tmp.R5KFNvgYxr/binary
0
追加された