web-dev-qa-db-ja.com

.shファイルとは何ですか?

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

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

一連のタイルを一度にダウンロードするために、彼らはスクリプトをダウンロードするように言い、それは最終的にdaymet-nc-retrieval.shにつながります: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc- retrieve.sh

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

これらのファイルをどう処理するかについては簡単な説明があるはずですが、これらのファイルの処理方法を知っていると人々がすでに思っている多くの投稿に埋もれているようです。実際にそれを実装するためのコードのあるページに到達した後、スクエア1から何をする必要があるのか​​を単純に言いたい人はいますか?ありがとう。

58
Tony H

ブラウザで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には含まれています)。最後になりましたが、Windows 10には Linuxバイナリのネイティブサポート が追加されました。

36

拡張子が.shのファイルとは何ですか?

Bourne Shellスクリプト です。 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では、許可オプションは次のようになります。

File permissions in XUbuntu

許可を変更したくない場合。シェルにコマンドを実行させることもできます。ターミナルで次を実行できます:

bash file.sh

シェルは、スクリプトの最初の行と同じでなければなりません。

それは安全ですか?

ファイルを実行するために別のタスクを手動で実行する必要があるのは奇妙なことかもしれません。しかし、これは部分的にはセキュリティの必要性が高いためです。

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

残念ながら、上記の警告は別として、悪意のあることがコンピュータで発生するのを防ぐためにあなたが何をすべきかを段階的に説明することはできません。そのため、実際に「確かに、私のコンピューターを使用して何かをすることができます」と言っている人から実行可能ファイルを取得して実行することを忘れないでください。

81
v010dya

shファイルは、Unix(Linux)シェル実行可能ファイルです。Windowsのbatファイルと同等(ただし、はるかに強力)です。

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

30
Nelson

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

4
David Bauer

.shファイルはシェルファイルです。プログラムを開くために使用できます。

1
Buckell

これは古い質問であり、おそらく助けにはならないでしょうが、多くのLinuxディストリビューション(たとえば、ubuntu)には「Live cd/usb」機能があるため、このスクリプトを本当に実行する必要がある場合は、コンピューターを起動してみてくださいLinuxに。 .isoをフラッシュドライブに書き込み(方法は http://goo.gl/U1wLYA )、ドライブを接続した状態でコンピューターを起動し、Fキーを押してブートメニューを表示します。 「... USB ...」を選択すると、ドライブにインストールしたばかりのOSが起動します。

1
Sam

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

0
PRAKHAR GUPTA