Ce este un fișier .sh? (Programare, Linux, Sh, Manager De Descărcare)

Tony H a intrebat.

Deci, eu nu am experiență în a trata cu o multitudine de tipuri de fișiere și nu am reușit să găsesc prea multe informații despre ce anume este .sh fișiere sunt. Iată ce încerc să fac:

Încerc să descarc seturi de date de hărți care sunt aranjate în plăci care pot fi descărcate individual: http://daymet.ornl.gov/gridded

Pentru a descărca o serie de dale deodată, spun să descarc scriptul lor, care în cele din urmă duce la daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

Deci, ce anume ar trebui să fac cu acest cod? Site-ul nu oferă instrucțiuni suplimentare, presupunând că utilizatorii știu ce să facă cu el. Bănuiesc că ar trebui să lipiți codul într-o altă aplicație nemenționată pentru un browser (folosind Chrome sau Firefox în acest caz)? Aproape că arată ca ceva ce ar putea fi lipit în Firefox/Greasemonkey, dar nu chiar. Doar printr-o căutare rapidă pe Google a tipului de fișier nu am reușit să mă lămuresc.

Sunt sigur că există o explicație simplă despre ce să faci cu aceste fișiere, dar pare să fie îngropată în o mulțime de mesaje în care oamenii presupun deja că știi ce să faci cu aceste fișiere. Este cineva dispus să spună pur și simplu ce trebuie făcut de la început după ce a ajuns la pagina cu codul până la implementarea efectivă a acestuia? Mulțumesc.

Comentarii

  • Extensia .sh este pentru script shell. –  > Por rai.skumar.
  • Sunteți pe un sistem unix? Pentru că altfel acel script nu te va ajuta prea mult. –  > Por melpomene.
6 răspunsuri
Álvaro González

Dacă deschideți al doilea link într-un browser, veți vedea codul sursă:

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

Deci este un script bash. Ai Linux?


În orice caz, scriptul nu este altceva decât o serie de recuperări HTTP. Atât wget, cât și curl sunt disponibile pentru majoritatea sistemelor de operare și aproape toate limbajele au biblioteci HTTP, așa că este destul de banal să fie rescris în orice altă tehnologie. Există, de asemenea, câteva portări Windows ale lui bash însuși (git include unul). Nu în ultimul rând, Windows 10 are acum suport nativ pentru binarele Linux.

Comentarii

  • Eu nu am Linux, rulează pe Windows 7. Este ceva disponibil doar pentru utilizatorii de Linux? –  > Por Tony H.
  • Este disponibil pentru majoritatea sistemelor de operare (Linux, Unix, MacOS…), cu excepția Windows. –  > Por Álvaro González.
  • Am făcut o mică căutare despre scripturile bash în Windows și se pare că acest subiect a fost abordat puțin: stackoverflow.com/questions/6413377/… Voi încerca lucrurile să văd cum funcționează. –  > Por Tony H.
  • Aveți Linux? Cel mai bun răspuns al zilei : ) –  > Por Adam Erickson.
v010dya

Ce este un fișier cu extensia .sh?

Este un fișier script Bourne shell. Acestea sunt utilizate în multe variante de sisteme de operare de tip UNIX. Ele nu au un „limbaj” și sunt interpretate de shell-ul dumneavoastră (interpretorul comenzilor de terminal) sau dacă prima linie este de forma

#!/path/to/interpreter

vor folosi interpretorul respectiv. Fișierul dvs. are prima linie:

#!/bin/bash

și asta înseamnă că utilizează Bourne Again Shell, așa-numitul bash. Acesta este, în toate scopurile practice, un înlocuitor al bunului și vechiului sh.

În funcție de interpretor, veți avea un limbaj diferit în care este scris fișierul.

Rețineți că, în lumea UNIX, nu extensia fișierului este cea care determină ce este fișierul (a se vedea Cum se execută un script shell).

Dacă veniți din lumea DOS/Windows, veți fi familiarizați cu fișierele care au extensiile .bat sau .cmd (fișiere batch). Acestea nu sunt similare din punct de vedere al conținutului, dar sunt asemănătoare în ceea ce privește designul.

Cum se execută un script shell

Spre deosebire de unele sisteme de operare prostești, *nix nu se bazează exclusiv pe extensii pentru a determina ce să facă cu un fișier. Se folosesc și permisiunile. Acest lucru înseamnă că, dacă încercați să executați scriptul shell după ce l-ați descărcat, va fi la fel ca și cum ați încerca să „executați” orice fișier text. Extensia „.sh” este acolo doar pentru a vă permite să recunoașteți fișierul respectiv.

Va trebui să faceți fișierul executabil. Să presupunem că ați descărcat fișierul dvs. sub forma file.sh, pe care îl puteți rula apoi în terminal:

chmod +x file.sh

chmod este o comandă pentru modificarea permisiunilor unui fișier, +x stabilește permisiunile de execuție (în acest caz pentru toată lumea) și, în final, aveți numele fișierului dvs.

De asemenea, puteți face acest lucru și în GUI. De cele mai multe ori puteți face clic dreapta pe fișier și să selectați proprietăți, în XUbuntu opțiunile de permisiuni arată astfel:

Dacă nu doriți să modificați permisiunile. De asemenea, puteți forța shell-ul să execute comanda. În terminal puteți rula:

bash file.sh

Shell-ul ar trebui să fie același ca în prima linie a scriptului dvs.

Cât de sigur este?

S-ar putea să vi se pară ciudat faptul că trebuie să efectuați manual o altă sarcină pentru a executa un fișier. Dar acest lucru se datorează parțial nevoii puternice de securitate.

Practic, atunci când descărcați și rulați un script bash, este același lucru ca și cum cineva v-ar spune „rulați toate aceste comenzi în succesiune pe computerul dumneavoastră, vă promit că rezultatele vor fi bune și sigure”. Întrebați-vă dacă aveți încredere în persoana care v-a furnizat acest fișier, întrebați-vă dacă sunteți sigur că ați descărcat fișierul din același loc ca și dumneavoastră, poate chiar aruncați o privire în interiorul acestuia pentru a vedea dacă ceva nu pare a fi la locul lui (deși pentru aceasta este necesar să știți ceva despre comenzile *nix și programarea bash).

Din păcate, în afară de avertismentul de mai sus, nu vă pot oferi o descriere pas cu pas a ceea ce ar trebui să faceți pentru a preveni ca lucrurile rele să se întâmple cu calculatorul dumneavoastră; așa că țineți cont de faptul că, de fiecare dată când primiți și executați un fișier executabil de la cineva, spuneți de fapt: „Sigur, poți să-mi folosești calculatorul pentru a face ceva”.

Comentarii

  • Acesta ar trebui să fie răspunsul selectat. –  > Por Pacerier.
Nelson

sh sunt fișiere executabile din shell-ul unix (linux), ele sunt echivalentul (dar mult mai puternice) al lui bat fișiere pe Windows.

Așadar, trebuie să îl rulați dintr-o consolă linux, doar tastându-i numele, la fel cum faceți cu fișierele bat pe windows.

Comentarii

  • În funcție de sistemul de operare specific, este posibil să trebuiască să rulați chmod +x file.sh –  > Por Pranav A..
  • Aș spune că bash este mai mult ca VBS pentru Windows, nu batch pentru Windows, deoarece batch era un limbaj DOS. –  > Por Switch.
David Bauer

În mod obișnuit, un fișier .sh este un script shell pe care îl puteți executa într-un terminal. Mai exact, scriptul pe care l-ați menționat este un script bash, pe care îl puteți vedea dacă deschideți fișierul și vă uitați în prima linie a fișierului, care se numește shebang sau linia magică.

Sam

Știu că este o întrebare veche și probabil că nu vă voi ajuta, dar multe distribuții Linux(de exemplu, Ubuntu) au o funcție „Live cd/usb”, așa că, dacă chiar aveți nevoie să executați acest script, ați putea încerca să porniți calculatorul în Linux. Trebuie doar să inscripționați un .iso pe o unitate flash (iată cum se face http://goo.gl/U1wLYA), porniți calculatorul cu unitatea conectată și apăsați tasta F pentru meniul de pornire. Dacă alegeți „…USB…”, veți porni în sistemul de operare pe care tocmai l-ați pus pe unitate.

Comentarii

  • însă fișierul ar putea fi rulat doar pe versiunea live. utilizatorul ar trebui să copieze fișierele înapoi în sistemul de operare principal (Windows). –  > Por Pranav A..
PRAKHAR GUPTA

deschideți locația în terminal, apoi tastați aceste comenzi1. chmod +x filename.sh2. ./filename.shacest lucru este