web-dev-qa-db-ja.com

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

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

  1. Zipファイル(curl -O
  2. ファイルを特定の場所に解凍します(unzip filename.Zip path/to/save
  3. .Zipファイルを削除する

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

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

19
alecwhardy

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は「Shebang」行と呼ばれ、必須です

25
zed_0xff

BSD TarはZipファイルを開き、ストリームを介して解凍できます。-Sフラグはリダイレクトを追跡し、-Lはエラーを表示します。したがって、以下が機能します:

curl -SL http://example.org/file.Zip | tar -xf - -C path/to/save
17
ruario

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

#!/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
2
ecwpz91