Apa itu file .sh?

91

Jadi saya tidak berpengalaman dalam menangani kebanyakan jenis file, dan saya belum dapat menemukan banyak info tentang .shfile apa sebenarnya . Inilah yang saya coba lakukan:

Saya mencoba mengunduh kumpulan data peta yang disusun dalam ubin yang dapat diunduh satu per satu: http://daymet.ornl.gov/gridded

Untuk mengunduh berbagai ubin sekaligus, mereka mengatakan untuk mengunduh skrip mereka, yang pada akhirnya mengarah ke daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

Jadi, apa sebenarnya yang harus saya lakukan dengan kode ini? Situs web tidak memberikan instruksi lebih lanjut, dengan asumsi pengguna tahu apa yang harus dilakukan dengannya. Saya menduga Anda seharusnya menempelkan kode tersebut ke beberapa aplikasi lain yang tidak disebutkan untuk browser (menggunakan Chrome atau Firefox dalam kasus ini)? Ini hampir terlihat seperti sesuatu yang bisa ditempelkan ke Firefox / Greasemonkey, tapi tidak cukup. Hanya dengan Google cepat pada jenis file saya belum bisa mendapatkan kepala atau ekor di atasnya.

Saya yakin ada penjelasan sederhana tentang apa yang harus dilakukan dengan file-file ini di luar sana, tetapi tampaknya terkubur di banyak posting di mana orang sudah berasumsi Anda tahu apa yang harus dilakukan dengan file-file ini. Adakah yang mau hanya mengatakan apa yang perlu dilakukan dari awal setelah sampai ke halaman dengan kode untuk benar-benar menerapkannya? Terima kasih.

Tony H.
sumber
7
Ekstensi .sh untuk skrip shell.
rai.skumar
3
Apakah Anda menggunakan sistem unix? Karena jika tidak, skrip itu tidak akan banyak membantu.
melpomene

Jawaban:

51

Jika Anda membuka tautan kedua di browser, Anda akan melihat kode sumber:

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

Jadi ini skrip bash. Punya Linux?


Bagaimanapun, skrip tidak lain adalah serangkaian pengambilan HTTP. Baik wget dan curl tersedia untuk sebagian besar sistem operasi dan hampir semua bahasa memiliki pustaka HTTP sehingga cukup mudah untuk menulis ulang dalam teknologi lain. Ada juga beberapa port Windows bash itu sendiri (git termasuk satu). Last but not least, Windows 10 sekarang memiliki dukungan asli untuk binari Linux .

Álvaro González
sumber
3
Saya tidak memiliki Linux, saya menjalankan Windows 7. Apakah ini sesuatu yang hanya tersedia untuk pengguna Linux?
Tony H
7
Ini tersedia untuk sebagian besar sistem operasi (Linux, Unix, MacOS ...) kecuali Windows.
Álvaro González
1
Saya melakukan sedikit pencarian pada skrip bash di windows dan sepertinya topik ini telah dibahas sedikit: stackoverflow.com/questions/6413377/… Saya akan mencoba beberapa hal untuk melihat cara kerjanya.
Tony H
4
Punya Linux? Jawaban terbaik hari ini
Adam Erickson
121

Apa itu file dengan ekstensi .sh?

Ini adalah skrip Bourne shell . Mereka digunakan dalam banyak variasi sistem operasi mirip UNIX. Mereka tidak memiliki "bahasa" dan diinterpretasikan oleh shell Anda (penafsir perintah terminal) atau jika baris pertama ada di formulir

#!/path/to/interpreter

mereka akan menggunakan penerjemah khusus itu. File Anda memiliki baris pertama:

#!/bin/bash

dan itu berarti menggunakan Bourne Again Shell, yang disebut bash. Ini untuk semua tujuan praktis pengganti sh tua yang baik.

Tergantung pada penerjemahnya, Anda akan memiliki bahasa yang berbeda di mana file tersebut ditulis.

Perlu diingat, bahwa di dunia UNIX, bukan ekstensi file yang menentukan apa file itu (lihat Cara menjalankan skrip shell).

Jika Anda berasal dari dunia DOS / Windows, Anda akan terbiasa dengan file yang memiliki ekstensi .bat atau .cmd (file batch). Mereka tidak serupa dalam konten, tetapi serupa dalam desain.

Bagaimana menjalankan skrip shell

Tidak seperti beberapa sistem operasi konyol, * nix tidak hanya mengandalkan ekstensi untuk menentukan apa yang harus dilakukan dengan file. Izin juga digunakan. Ini berarti bahwa jika Anda mencoba menjalankan skrip shell setelah mengunduhnya, itu akan sama dengan mencoba "menjalankan" file teks apa pun. Ekstensi ".sh" hanya ada untuk memudahkan Anda mengenali file itu.

Anda harus membuat file tersebut dapat dieksekusi. Anggaplah Anda telah mengunduh file Anda sebagai file.sh, Anda kemudian dapat menjalankan di terminal Anda:

chmod +x file.sh

chmodadalah perintah untuk mengubah izin file, +xmenetapkan izin eksekusi (dalam hal ini untuk semua orang) dan akhirnya Anda memiliki nama file Anda.

Anda juga dapat melakukannya di GUI. Sebagian besar waktu Anda dapat mengklik kanan pada file dan memilih properti, di XUbuntu opsi perizinan terlihat seperti ini:

Izin file di XUbuntu

Jika Anda tidak ingin mengubah izin. Anda juga dapat memaksa shell untuk menjalankan perintah. Di terminal Anda dapat menjalankan:

bash file.sh

Shell harus sama dengan baris pertama skrip Anda.

Seberapa amankah itu?

Anda mungkin merasa aneh jika Anda harus melakukan tugas lain secara manual untuk menjalankan file. Tetapi ini sebagian karena kebutuhan yang kuat akan keamanan.

Pada dasarnya ketika Anda mengunduh dan menjalankan skrip bash, itu sama saja dengan seseorang yang memberi tahu Anda "jalankan semua perintah ini secara berurutan di komputer Anda, saya berjanji bahwa hasilnya akan baik dan aman". Tanyakan pada diri Anda apakah Anda mempercayai pihak yang telah menyediakan file ini, tanyakan pada diri Anda apakah Anda yakin telah mengunduh file dari tempat yang sama seperti yang Anda pikirkan, bahkan mungkin melihat sekilas ke dalam untuk melihat apakah ada sesuatu yang tidak pada tempatnya (meskipun itu membutuhkan bahwa Anda mengetahui sesuatu tentang perintah * nix dan pemrograman bash).

Sayangnya, terlepas dari peringatan di atas, saya tidak dapat memberikan gambaran langkah demi langkah tentang apa yang harus Anda lakukan untuk mencegah hal-hal jahat terjadi dengan komputer Anda; jadi ingatlah bahwa setiap kali Anda mendapatkan dan menjalankan file yang dapat dieksekusi dari seseorang, Anda sebenarnya berkata, "Tentu, Anda dapat menggunakan komputer saya untuk melakukan sesuatu".

v010dya
sumber
10
Ini harus menjadi jawaban yang dipilih.
Pacerier
36

shFile adalah file executable shell unix (linux), mereka setara (tetapi jauh lebih kuat) dari batfile di windows.

Jadi Anda perlu menjalankannya dari konsol linux, cukup ketikkan namanya sama dengan yang Anda lakukan dengan file bat di windows.

Nelson
sumber
2
Tergantung pada OS spesifiknya, Anda mungkin perlu menjalankanchmod +x file.sh
Pranav A.
Saya akan mengatakan bash lebih seperti VBS untuk windows, bukan batch untuk windows karena batch adalah bahasa DOS.
Beralih
4

Biasanya file .sh adalah skrip shell yang dapat Anda jalankan di terminal. Secara khusus, skrip yang Anda sebutkan adalah skrip bash, yang dapat Anda lihat jika Anda membuka file dan melihat di baris pertama file, yang disebut shebang atau baris ajaib.

David Bauer
sumber
1

Saya tahu ini adalah pertanyaan lama dan saya mungkin tidak akan membantu, tetapi banyak distribusi Linux (misalnya, ubuntu) memiliki fungsi "Live cd / usb", jadi jika Anda benar-benar perlu menjalankan skrip ini, Anda dapat mencoba mem-boot komputer Anda ke Linux. Cukup bakar .iso ke flash drive ( begini caranya http://goo.gl/U1wLYA ), mulai komputer Anda dengan drive dicolokkan, dan tekan tombol F untuk menu boot. Jika Anda memilih "... USB ...", Anda akan boot ke OS yang baru saja Anda masukkan ke drive.

Sam
sumber
namun file tersebut hanya akan dijalankan pada versi live. pengguna perlu menyalin file kembali ke OS utama (Windows).
Pranav A.
-2

buka lokasi di terminal lalu ketik perintah ini 1. chmod + x namafile.sh 2. ./filename.sh itu saja

PRAKHAR GUPTA
sumber