Co to jest plik .sh?

91

Nie mam więc doświadczenia w radzeniu sobie z wieloma typami plików i nie byłem w stanie znaleźć wielu informacji na temat tego, czym .shsą pliki. Oto, co próbuję zrobić:

Próbuję pobrać zestawy danych map, które są ułożone w kafelki, które można pobrać pojedynczo: http://daymet.ornl.gov/gridded

Aby pobrać szereg kafelków na raz, mówią, aby pobrać ich skrypt, co ostatecznie prowadzi do daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

Więc co dokładnie mam zrobić z tym kodem? Witryna nie zawiera dalszych instrukcji, zakładając, że użytkownicy wiedzą, co z nią zrobić. Zgaduję, że masz wkleić kod do innej niewymienionej aplikacji dla przeglądarki (w tym przypadku przy użyciu Chrome lub Firefox)? Wygląda prawie jak coś, co można by wkleić do Firefoksa / Greasemonkey, ale nie do końca. Tylko przez szybkie Google na typ pliku nie udało mi się znaleźć na nim orła ani reszki.

Jestem pewien, że istnieje proste wyjaśnienie, co zrobić z tymi plikami, ale wydaje się, że jest ono zakopane w wielu postach, w których ludzie już zakładają, że wiesz, co zrobić z tymi plikami. Czy ktoś chce po prostu powiedzieć, co należy zrobić od pierwszego kwadratu po przejściu do strony z kodem, aby go faktycznie zaimplementować? Dzięki.

Tony H.
źródło
7
Rozszerzenie .sh jest przeznaczone dla skryptu powłoki.
rai.skumar
3
Czy korzystasz z systemu uniksowego? W przeciwnym razie ten skrypt niewiele pomoże.
melpomene

Odpowiedzi:

51

Jeśli otworzysz drugi link w przeglądarce, zobaczysz kod źródłowy:

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

Więc to jest skrypt bash. Masz Linuksa?


W każdym razie skrypt to nic innego jak seria pobrań HTTP. Zarówno wget, jak i curl są dostępne dla większości systemów operacyjnych, a prawie wszystkie języki mają biblioteki HTTP, więc przepisanie w dowolnej innej technologii jest dość trywialne. Istnieją również porty samego basha w systemie Windows (git zawiera jeden). Wreszcie system Windows 10 ma teraz natywną obsługę plików binarnych systemu Linux .

Álvaro González
źródło
3
Nie mam Linuksa, pracuję na Windows 7. Czy to coś jest dostępne tylko dla użytkowników Linuksa?
Tony H
7
Jest dostępny dla większości systemów operacyjnych (Linux, Unix, MacOS ...) z wyjątkiem Windows.
Álvaro González
1
Poszukałem trochę skryptów bash w systemie Windows i wygląda na to, że ten temat został nieco omówiony: stackoverflow.com/questions/6413377/ ... Spróbuję różnych rzeczy, aby zobaczyć, jak to działa.
Tony H
4
Masz Linuksa? Najlepsza odpowiedź dnia
Adam Erickson
121

Co to jest plik z rozszerzeniem .sh?

Jest to skrypt powłoki Bourne'a . Są używane w wielu odmianach systemów operacyjnych typu UNIX. Nie mają „języka” i są interpretowane przez Twoją powłokę (interpreter poleceń terminala) lub jeśli pierwsza linia jest w postaci

#!/path/to/interpreter

użyją tego konkretnego tłumacza. Twój plik ma pierwszą linię:

#!/bin/bash

a to oznacza, że ​​używa Bourne Again Shell, tzw. bash. Z praktycznego punktu widzenia zastępuje stare, dobre rzeczy.

W zależności od tłumacza będziesz mieć inny język, w którym plik jest napisany.

Należy pamiętać, że w świecie UNIX to nie rozszerzenie pliku określa, czym jest plik (zobacz Jak wykonać skrypt powłoki).

Jeśli pochodzisz ze świata DOS / Windows, będziesz zaznajomiony z plikami z rozszerzeniami .bat lub .cmd (pliki wsadowe). Nie mają podobnej treści, ale są podobne do projektu.

Jak wykonać skrypt powłoki

W przeciwieństwie do niektórych głupich systemów operacyjnych, * nix nie polega wyłącznie na rozszerzeniach, aby określić, co zrobić z plikiem. Używane są również uprawnienia. Oznacza to, że jeśli spróbujesz uruchomić skrypt powłoki po jego pobraniu, będzie to takie samo, jak próba „uruchomienia” dowolnego pliku tekstowego. Rozszerzenie „.sh” jest dostępne tylko dla wygody użytkownika, aby rozpoznać ten plik.

Będziesz musiał uczynić plik wykonywalnym. Załóżmy, że pobrałeś plik jako file.sh, możesz następnie uruchomić w swoim terminalu:

chmod +x file.sh

chmodjest poleceniem do zmiany uprawnień do pliku, +xustawia uprawnienia do wykonywania (w tym przypadku dla wszystkich) i wreszcie masz nazwę pliku.

Możesz to również zrobić w GUI. W większości przypadków możesz kliknąć plik prawym przyciskiem myszy i wybrać właściwości, w XUbuntu opcje uprawnień wyglądają następująco:

Uprawnienia do plików w XUbuntu

Jeśli nie chcesz zmieniać uprawnień. Możesz także zmusić powłokę do uruchomienia polecenia. W terminalu możesz uruchomić:

bash file.sh

Powłoka powinna być taka sama jak w pierwszej linii skryptu.

Jak to jest bezpieczne?

Może się wydawać dziwne, że musisz wykonać inne zadanie ręcznie, aby wykonać plik. Ale jest to częściowo spowodowane silną potrzebą bezpieczeństwa.

Zasadniczo, kiedy pobierasz i uruchamiasz skrypt basha, jest to to samo, co ktoś mówi ci „uruchom wszystkie te polecenia po kolei na swoim komputerze, obiecuję, że wyniki będą dobre i bezpieczne”. Zadaj sobie pytanie, czy ufasz stronie, która dostarczyła ten plik, zadaj sobie pytanie, czy jesteś pewien, że pobrałeś plik z tego samego miejsca, co myślałeś, a może nawet zajrzyj do środka, aby sprawdzić, czy coś wygląda nie na miejscu (chociaż to wymaga że wiesz coś o poleceniach * nix i programowaniu bash).

Niestety poza powyższym ostrzeżeniem nie mogę szczegółowo opisać, co należy zrobić, aby zapobiec złym rzeczom związanym z komputerem; więc pamiętaj, że za każdym razem, gdy otrzymasz i uruchomisz plik wykonywalny od kogoś, w rzeczywistości mówisz: „Jasne, możesz użyć mojego komputera do zrobienia czegoś”.

v010dya
źródło
10
To powinna być wybrana odpowiedź.
Pacerier,
36

shpliki są plikami wykonywalnymi powłoki unixowej (linux), są odpowiednikami (ale o wiele bardziej wydajnymi) batplików w systemie Windows.

Musisz więc uruchomić go z konsoli linuxa, po prostu wpisując jego nazwę tak samo, jak robisz z plikami bat w systemie Windows.

Nelson
źródło
2
W zależności od konkretnego systemu operacyjnego może być konieczne uruchomieniechmod +x file.sh
Pranav A.
Powiedziałbym, że bash bardziej przypomina VBS dla Windows, a nie wsadowy dla Windows, ponieważ batch był językiem DOS.
Przełącz się
4

Zwykle plik .sh jest skryptem powłoki, który można wykonać w terminalu. Konkretnie, skrypt, o którym wspomniałeś, to skrypt bash, który możesz zobaczyć, otwierając plik i przeglądając pierwszą linię pliku, która nazywa się shebang lub magic line.

David Bauer
źródło
1

Wiem, że to stare pytanie i prawdopodobnie nie pomogę, ale wiele dystrybucji Linuksa (np. Ubuntu) ma funkcję „Live cd / usb”, więc jeśli naprawdę potrzebujesz uruchomić ten skrypt, możesz spróbować uruchomić komputer do Linuksa. Po prostu wypal plik .iso na dysku flash (oto jak http://goo.gl/U1wLYA ), uruchom komputer z podłączonym dyskiem i naciśnij klawisz F, aby wyświetlić menu rozruchu. Jeśli wybierzesz "... USB ...", uruchomisz system operacyjny, który właśnie umieściłeś na dysku.

Sam
źródło
jednak plik byłby uruchamiany tylko w wersji live. użytkownik musiałby skopiować pliki z powrotem do głównego systemu operacyjnego (Windows).
Pranav A.,
-2

otwórz lokalizację w terminalu, a następnie wpisz te polecenia 1. chmod + x nazwa_pliku.sh 2. ./filename.sh to wszystko

PRAKHAR GUPTA
źródło