Что такое файл .sh?

Так что у меня нет опыта работы с множеством типов файлов, и я не смог найти много информации о том, что такое .sh файлы. Вот что я пытаюсь сделать:

Я пытаюсь загрузить наборы картографических данных, организованные в виде фрагментов, которые можно загружать по отдельности: http://daymet.ornl.gov/gridded< /а>

Чтобы загрузить сразу несколько плиток, они говорят, что загружают свой скрипт, что в конечном итоге приводит к daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval.sh

Итак, что именно я должен делать с этим кодом? Веб-сайт не предоставляет дальнейших инструкций, предполагая, что пользователи знают, что с ним делать. Я предполагаю, что вы должны вставить код в какое-то другое неупомянутое приложение для браузера (в данном случае используя Chrome или Firefox)? Это почти похоже на то, что можно вставить в Firefox/Greasemonkey, но не совсем. Просто быстро погуглив тип файла, я не смог понять его.

Я уверен, что есть простое объяснение того, что делать с этими файлами, но, похоже, оно скрыто во множестве постов, где люди уже предполагают, что вы знаете, что делать с этими файлами. Любой, кто хочет просто сказать, что нужно сделать с нуля после перехода на страницу с кодом до его фактической реализации? Спасибо.


person Tony H    schedule 10.12.2012    source источник
comment
Расширение .sh предназначено для сценария оболочки.   -  person rai.skumar    schedule 10.12.2012
comment
Вы используете систему unix? Потому что в противном случае этот скрипт не сильно поможет.   -  person melpomene    schedule 10.12.2012


Ответы (7)


Если вы откроете вторую ссылку в браузере, вы увидите исходный код:

#!/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-скрипт. Есть линукс?


В любом случае сценарий представляет собой не что иное, как серию HTTP-запросов. И wget, и curl доступны для большинства операционных систем, и почти все языки имеют библиотеки HTTP, поэтому их довольно просто переписать на любой другой технологии. Есть также несколько портов самого bash для Windows (один из них есть в git). И последнее, но не менее важное: Windows 10 теперь имеет встроенную поддержку двоичных файлов Linux.

person Álvaro González    schedule 10.12.2012

Что такое файл с расширением .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 устанавливает права на выполнение (в данном случае для всех) и, наконец, у вас есть имя вашего файла.

Вы также можете сделать это в графическом интерфейсе. В большинстве случаев вы можете щелкнуть файл правой кнопкой мыши и выбрать свойства, в XUbuntu параметры разрешений выглядят так:

«Разрешения

Если вы не хотите изменять разрешения. Вы также можете заставить оболочку выполнить команду. В терминале вы можете запустить:

bash file.sh

Оболочка должна быть такой же, как и в первой строке вашего скрипта.

Насколько это безопасно?

Вам может показаться странным, что вы должны выполнить другую задачу вручную, чтобы запустить файл. Но это отчасти из-за сильной потребности в безопасности.

По сути, когда вы загружаете и запускаете сценарий bash, это то же самое, что кто-то говорит вам: «Запустите все эти команды последовательно на своем компьютере, я обещаю, что результаты будут хорошими и безопасными». Спросите себя, доверяете ли вы стороне, предоставившей этот файл, спросите себя, уверены ли вы, что загрузили файл из того же места, откуда вы думали, возможно, даже загляните внутрь, чтобы увидеть, не выглядит ли что-то неуместным (хотя для этого требуется что вы что-то знаете о командах *nix и программировании bash).

К сожалению, кроме предупреждения, приведенного выше, я не могу дать пошаговое описание того, что вам следует делать, чтобы с вашим компьютером не случилось чего-то плохого; поэтому просто имейте в виду, что каждый раз, когда вы получаете и запускаете исполняемый файл от кого-то, вы на самом деле говорите: «Конечно, вы можете использовать мой компьютер для чего-то».

person v010dya    schedule 28.08.2015
comment
Это должен быть выбранный ответ. - person Pacerier; 15.09.2015

Файлы sh представляют собой исполняемые файлы оболочки unix (linux), они эквивалентны (но гораздо более эффективны) файлам bat в Windows.

Поэтому вам нужно запустить его из консоли Linux, просто набрав его имя так же, как вы делаете это с bat-файлами в Windows.

person Nelson    schedule 10.12.2012
comment
В зависимости от конкретной ОС вам может потребоваться запустить chmod +x file.sh - person Pranav A.; 07.09.2017
comment
Я бы сказал, что bash больше похож на VBS для Windows, а не на пакет для Windows, поскольку пакет был языком DOS. - person Switch; 06.08.2020

Обычно файл .sh представляет собой сценарий оболочки, который можно выполнить в терминале. В частности, упомянутый вами сценарий представляет собой сценарий bash, который вы можете увидеть, если откроете файл и посмотрите на первую строку файла, которая называется шебангом или волшебной строкой.

person David Bauer    schedule 10.12.2012

Я знаю, что это старый вопрос, и я, вероятно, не помогу, но многие дистрибутивы Linux (например, Ubuntu) имеют функцию «Live cd/usb», поэтому, если вам действительно нужно запустить этот скрипт, вы можете попробовать загрузить свой компьютер. в линукс. Просто запишите .iso на флешку (вот как http://goo.gl/U1wLYA), запустите компьютер с подключенным диском и нажмите клавишу F для меню загрузки. Если вы выберете "...USB...", вы загрузитесь в ОС, которую только что установили на диск.

person Sam    schedule 28.08.2015
comment
однако файл будет запускаться только в реальной версии. пользователю потребуется скопировать файлы обратно в основную ОС (Windows). - person Pranav A.; 07.09.2017

Как запускать сценарии .sh?

Дайте разрешение на выполнение вашему сценарию:

chmod +x /path/to/yourscript.sh И для запуска вашего скрипта:

/path/to/yourscript.sh Так как . относится к текущему каталогу: если yourscript.sh находится в текущем каталоге, вы можете упростить это до:

./ваш скрипт.ш

или с графическим интерфейсом

введите здесь описание изображения введите здесь описание изображения

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

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

person leonidaa    schedule 01.06.2021

откройте папку в терминале, затем введите следующие команды: 1. chmod +x имя_файла.sh 2. ./имя_файла.sh вот и все

person PRAKHAR GUPTA    schedule 12.02.2017