Wat is een .sh-bestand?

Dus ik heb geen ervaring met het omgaan met een overvloed aan bestandstypen, en ik heb niet veel informatie kunnen vinden over wat .sh-bestanden precies zijn. Dit is wat ik probeer te doen:

Ik probeer kaartgegevenssets te downloaden die zijn gerangschikt in tegels die afzonderlijk kunnen worden gedownload: http://daymet.ornl.gov /gerasterd

Om een reeks tegels in één keer te downloaden, zeggen ze hun script te downloaden, wat uiteindelijk leidt tot daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

Dus, wat moet ik precies met deze code doen? De website geeft geen verdere instructies, ervan uitgaande dat gebruikers weten wat ze ermee moeten doen. Ik vermoed dat je de code in een andere niet-vermelde applicatie voor een browser moet plakken (in dit geval met Chrome of Firefox)? Het lijkt bijna op iets dat in Firefox/Greasemonkey kan worden geplakt, maar niet helemaal. Alleen door een snelle Google op het bestandstype heb ik er geen kop of staart aan kunnen krijgen.

Ik weet zeker dat er een eenvoudige uitleg is over wat je met deze bestanden moet doen, maar het lijkt te zijn begraven in tal van berichten waarin mensen al aannemen dat je weet wat je met deze bestanden moet doen. Iemand die gewoon wil zeggen wat er vanaf het begin moet gebeuren nadat hij op de pagina met de code is gekomen om deze daadwerkelijk te implementeren? Bedankt.


Antwoord 1, autoriteit 100%

Als u uw tweede link in een browser opent, ziet u de broncode:

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

Het is dus een bash-script. Heb je Linux?


In ieder geval is het script niets anders dan een reeks HTTP-ophaalacties. Zowel wget als curl zijn beschikbaar voor de meeste besturingssystemen en bijna alle talen hebben HTTP-bibliotheken, dus het is vrij triviaal om in een andere technologie te herschrijven. Er zijn ook enkele Windows-poorten van bash zelf (git bevat er een). Last but not least heeft Windows 10 nu native ondersteuning voor Linux-binaries.


Antwoord 2, autoriteit 97%

Wat is een bestand met de extensie .sh?

Het is een Bourne-shellscript. Ze worden gebruikt in vele variaties van UNIX-achtige besturingssystemen. Ze hebben geen “taal” en worden geïnterpreteerd door uw shell (interpreter van terminalopdrachten) of als de eerste regel de vorm heeft

#!/path/to/interpreter

ze zullen die specifieke tolk gebruiken. Uw bestand heeft de eerste regel:

#!/bin/bash

en dat betekent dat het Bourne Again Shell gebruikt, de zogenaamde bash. Het is voor alle praktische doeleinden een vervanging voor de goede oude sh.

Afhankelijk van de tolk heeft u een andere taal waarin het bestand is geschreven.

Houd er rekening mee dat het in de UNIX-wereld niet de extensie van het bestand is die bepaalt wat het bestand is (zie Een shellscript uitvoeren).

Als je uit de wereld van DOS/Windows komt, ben je bekend met bestanden met de extensie .bat of .cmd (batch-bestanden). Ze lijken qua inhoud niet op elkaar, maar qua ontwerp lijken ze op elkaar.

Een shellscript uitvoeren

In tegenstelling tot sommige dwaze besturingssystemen, vertrouwt *nix niet uitsluitend op extensies om te bepalen wat er met een bestand moet worden gedaan. Er worden ook machtigingen gebruikt. Dit betekent dat als u probeert het shellscript uit te voeren nadat u het hebt gedownload, dit hetzelfde zal zijn als het proberen om een willekeurig tekstbestand te “uitvoeren”. De extensie “.sh” is er alleen voor uw gemak om dat bestand te herkennen.

U moet het bestand uitvoerbaar maken. Laten we aannemen dat je je bestand hebt gedownload als file.sh, je kunt het dan in je terminal uitvoeren:

chmod +x file.sh

chmodis een commando voor het wijzigen van bestandsrechten, +xstelt uitvoeringsrechten in (in dit geval voor iedereen) en tot slot heb je je bestandsnaam.

Je kunt het ook in de GUI doen. Meestal kunt u met de rechtermuisknop op het bestand klikken en eigenschappen selecteren, in XUbuntu zien de machtigingsopties er als volgt uit:

Als u de machtigingen niet wilt wijzigen. U kunt de shell ook dwingen om de opdracht uit te voeren. In de terminal kunt u uitvoeren:

bash file.sh

De shell moet hetzelfde zijn als in de eerste regel van je script.

Hoe veilig is het?

Misschien vindt u het raar dat u een andere taak handmatig moet uitvoeren om een bestand uit te voeren. Maar dit komt deels door de sterke behoefte aan beveiliging.

Als je een bash-script downloadt en uitvoert, is dat hetzelfde als iemand die je zegt: “Voer al deze opdrachten achter elkaar uit op je computer, ik beloof dat de resultaten goed en veilig zullen zijn”. Vraag jezelf af of je de partij die dit bestand heeft aangeleverd vertrouwt, vraag jezelf af of je zeker weet dat je het bestand hebt gedownload vanaf dezelfde plek als je dacht, misschien zelfs een kijkje binnenin om te zien of er iets niet op zijn plaats lijkt (hoewel dat vereist dat je iets weet over *nix-commando’s en bash-programmering).

Helaas kan ik, afgezien van de bovenstaande waarschuwing, geen stapsgewijze beschrijving geven van wat u moet doen om te voorkomen dat er slechte dingen met uw computer gebeuren; Houd er dus rekening mee dat elke keer dat u een uitvoerbaar bestand van iemand ontvangt en uitvoert, u eigenlijk zegt: “Natuurlijk, u kunt mijn computer gebruiken om iets te doen”.


Antwoord 3, autoriteit 71%

sh-bestanden zijn uitvoerbare unix (linux) shell-bestanden, ze zijn het equivalent (maar veel krachtiger) van bat-bestanden op Windows.

Je moet het dus vanaf een Linux-console uitvoeren, door de naam op dezelfde manier in te typen als bij bat-bestanden in Windows.


Antwoord 4, autoriteit 7%

Normaal gesproken is een .sh-bestand een shellscript dat u in een terminal kunt uitvoeren. In het bijzonder is het script dat u noemde een bash-script, dat u kunt zien als u het bestand opent en in de eerste regel van het bestand kijkt, die de shebang- of magische regel wordt genoemd.


Antwoord 5, autoriteit 2%

Ik weet dat dit een oude vraag is en ik zal waarschijnlijk niet helpen, maar veel Linux-distributies (bijv. ubuntu) hebben een “Live cd/usb”-functie, dus als je dit script echt moet uitvoeren, kun je het proberen het opstarten van uw computer in Linux. Brand gewoon een .iso op een flashstation (hier is hoe http://goo.gl/U1wLYA), start uw computer met de drive aangesloten en druk op de F-toets voor het opstartmenu. Als u “…USB…” kiest, start u op in het besturingssysteem dat u zojuist op de schijf hebt geplaatst.


Antwoord 6

Hoe voer ik .sh-scripts uit?

Geef uitvoeringstoestemming aan uw script:

chmod +x /path/to/yourscript.sh
En om uw script uit te voeren:

/pad/naar/uwscript.sh
Sinds . verwijst naar de huidige directory: als yourscript.sh zich in de huidige directory bevindt, kunt u dit vereenvoudigen tot:

./uwscript.sh

of met GUI


https://askubuntu.com/questions/38661/how -do-i-run-sh-scripts/38666#38666

https://www.cyberciti.biz/faq/ run-execute-sh-shell-script/


Antwoord 7

open de locatie in terminal en typ deze commando’s
1. chmod +x bestandsnaam.sh
2. ./bestandsnaam.sh
dat is het

Other episodes