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


91

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

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

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

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

これらのファイルをどうするかについては簡単な説明があると思いますが、これらのファイルをどうするかを知っていると人々がすでに想定している多くの投稿に埋もれているようです。コードのあるページにアクセスして実際に実装した後、正方形から何をする必要があるかを簡単に言う人はいますか?ありがとう。


7
.sh拡張子はシェルスクリプト用です。
rai.skumar 2012

3
UNIXシステムを使用していますか?そうでなければ、そのスクリプトはあまり役に立たないからです。
メルポメネー2012

回答:


51

ブラウザで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バイナリをネイティブでサポートするようになりました


3
Linuxを持っていません。Windows7で実行しています。これはLinuxユーザーだけが利用できるものですか?
トニーH

7
Windowsを除くほとんどのオペレーティングシステム(Linux、Unix、MacOS ...)で利用できます。
アルバロゴンサレス

1
Windowsでbashスクリプトを少し検索しましたが、このトピックは少しカバーされているようです:stackoverflow.com/questions/6413377/… それがどのように機能するかを試してみます。
トニーH

4
Linuxを手に入れましたか?今日のベストアンサー:)
Adam Erickson 2018

121

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

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

#!/path/to/interpreter

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

#!/bin/bash

つまり、Bourne Again Shell、いわゆるbashを使用しているということです。それはすべての実用的な目的のために古き良き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プログラミングについて何か知っていること)。

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


10
これが選択された答えであるはずです。
ペースリエ2015

36

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

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


2
特定のOSによっては、実行する必要がある場合がありますchmod +x file.sh
Pranav A. 2017

バッチはDOS言語であったため、bashはWindows用のVBSに似ており、Windows用のバッチではありません。
切り替えます

4

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


1

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


ただし、ファイルはライブバージョンでのみ実行されます。ユーザーはファイルをメインOS(Windows)にコピーして戻す必要があります。
Pranav A. 2017

-2

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.