118

そのため、私は多くの種類のファイルを扱った経験がなく、正確にどのような.shファイルであるかについて多くの情報を見つけることができませんでした。これが私がやろうとしていることです:

個別にダウンロードできるタイルに配置されたマップ データ セットをダウンロードしようとしています: http://daymet.ornl.gov/gridded

一度に一連のタイルをダウンロードするために、スクリプトをダウンロードするように言われていdaymet-nc-retrieval.shます

では、このコードで正確に何をすればよいのでしょうか? ウェブサイトは、ユーザーがそれをどうするかを知っていると仮定して、それ以上の指示を提供しません. ブラウザ用の他の言及されていないアプリケーションにコードを貼り付けることになっていると思います(この場合はChromeまたはFirefoxを使用しています)?Firefox/Greasemonkey に貼り付けることができるもののように見えますが、完全ではありません。ファイルの種類について簡単に Google で検索しただけでは、頭も尻尾もわかりませんでした。

これらのファイルをどうするかについての簡単な説明があると確信していますが、これらのファイルをどうするかを知っていると人々がすでに想定している多くの投稿に埋もれているようです. 実際にコードを実装するためにコードのあるページに到達した後、最初から何をする必要があるかを簡単に言いたい人はいますか? ありがとう。

4

7 に答える 7

142

■f拡張子が .sh のファイルとは?

Bourne シェルスクリプトです。これらは、UNIX ライクなオペレーティング システムのさまざまなバリエーションで使用されます。それらには「言語」がなく、シェル(端末コマンドのインタープリター)によって解釈されるか、最初の行が次の形式の場合

#!/path/to/interpreter

彼らはその特定のインタープリターを使用します。ファイルの最初の行は次のとおりです。

#!/bin/bash

これは、bash と呼ばれる Bourne Again Shell を使用することを意味します。これは、すべての実用的な目的で、古き良き sh の代替品です。

インタープリターに応じて、ファイルが書かれている言語が異なります。

UNIX の世界では、ファイルが何であるかを決定するのはファイルの拡張子ではないことに注意してください (シェルスクリプトの実行方法を参照)。

DOS/Windows の経験がある方は、拡張子が .bat または .cmd のファイル (バッチ ファイル) に慣れているでしょう。内容は似ていませんが、デザインは似ています。

シェルスクリプトの実行方法

一部の安全でないオペレーティング システムとは異なり、*nix は拡張子だけに依存してファイルの処理方法を決定するわけではありません。権限も使用されます。これは、ダウンロード後にシェル スクリプトを実行しようとすると、テキスト ファイルを「実行」しようとするのと同じになることを意味します。「.sh」拡張子は、そのファイルを簡単に認識できるようにするためだけに付けられています。

ファイルを実行可能にする必要があります。ファイルを としてダウンロードしたと仮定してfile.sh、ターミナルで実行できます。

chmod +x file.sh

chmodファイルのパーミッションを変更するためのコマンドであり、+x実行パーミッション (この場合は全員) を設定し、最後にファイル名を取得します。

GUIでもできます。ほとんどの場合、ファイルを右クリックしてプロパティを選択できます。XUbuntu では、アクセス許可オプションは次のようになります。

XUbuntu のファイル権限

権限を変更したくない場合。シェルにコマンドを強制的に実行させることもできます。ターミナルでは、次を実行できます。

bash file.sh

シェルは、スクリプトの最初の行と同じである必要があります。

どのくらい安全ですか?

ファイルを実行するために手動で別のタスクを実行しなければならないのは奇妙に感じるかもしれません。しかし、これは部分的には、セキュリティに対する強いニーズによるものです。

基本的に、bash スクリプトをダウンロードして実行することは、誰かが「これらすべてのコマンドをコンピューターで順番に実行してください。結果が良好で安全であることを約束します」と言っているのと同じことです。このファイルを提供した当事者を信頼しているかどうかを自問し、自分が思っていたのと同じ場所からファイルをダウンロードしたかどうかを自問してください。 *nix コマンドと bash プログラミングについてある程度知っている必要があります)。

残念ながら、上記の警告を除いて、コンピューターで悪事が起こるのを防ぐために何をすべきかを順を追って説明することはできません。そのため、誰かから実行可能ファイルを取得して実行するときはいつでも、実際には「もちろん、私のコンピューターを使用して何かを行うことができます」と言っていることに注意してください。

于 2015-08-28T04:42:54.733 に答える
56

ブラウザで2番目のリンクを開くと、ソースコードが表示されます。

#!/bin/bash
# Script to download individual .nc files from the ORNL
# Daymet server at: http://daymet.ornl.gov

[...]

# For ranges use {start..end}
# for individul vaules, use: 1 2 3 4 
for year in {2002..2003}
do
   for tile in {1159..1160}
        do wget --limit-rate=3m http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc -O ${tile}_${year}_vp.nc
        # An example using curl instead of wget
    #do curl --limit-rate 3M -o ${tile}_${year}_vp.nc http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc
     done
done

つまり、bashスクリプトです。Linuxを手に入れましたか?


いずれにせよ、スクリプトは一連のHTTP取得に他なりません。wgetとcurlはどちらもほとんどのオペレーティングシステムで使用でき、ほとんどすべての言語にHTTPライブラリがあるため、他のテクノロジで書き直すのは非常に簡単です。bash自体のWindowsポートもいくつかあります(gitには1つ含まれています)。最後になりましたが、Windows10はLinuxバイナリをネイティブでサポートするようになりました。

于 2012-12-10T16:49:06.367 に答える
41

shbatファイルはUNIX(Linux)シェル実行可能ファイルであり、Windows上のファイルと同等です(ただし、はるかに強力です) 。

したがって、Windowsのbatファイルで行うのと同じ名前を入力するだけで、Linuxコンソールから実行する必要があります。

于 2012-12-10T16:48:13.350 に答える
4

通常、.shファイルは、ターミナルで実行できるシェルスクリプトです。具体的には、あなたが言及したスクリプトはbashスクリプトであり、ファイルを開いてファイルの最初の行を見ると、シバンまたはマジックラインと呼ばれます。

于 2012-12-10T16:49:27.770 に答える
-2

ターミナルで場所を開き、次のコマンドを入力します 1. chmod +x filename.sh 2. ./filename.sh それだけです

于 2017-02-12T09:46:06.703 に答える