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


92

Тому я не маю досвіду роботи з безліччю типів файлів, і мені не вдалося знайти багато інформації про те, що саме .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, але не зовсім. Просто швидким Google щодо типу файлу я не міг отримати голови або хвости на ньому.

Я впевнений, що є просте пояснення щодо того, що робити з цими файлами, але, схоже, це поховано в безлічі публікацій, де люди вже припускають, що ви знаєте, що робити з цими файлами. Будь-хто, хто бажає просто сказати, що потрібно зробити, починаючи з першого квадрата після переходу на сторінку з кодом і фактично реалізуючи його? Дякую.


7
.sh розширення призначене для сценарію оболонки.
rai.skumar

3
Ви в системі Unix? Бо інакше цей сценарій не надто допоможе.
melpomene

Відповіді:


51

Якщо ви відкриєте друге посилання в браузері, ви побачите вихідний код:

#!/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. Маєте Linux?


У будь-якому випадку, сценарій - це не що інше, як серія HTTP-пошуку. І wget, і curl доступні для більшості операційних систем, і майже у всіх мовах є бібліотеки HTTP, тому переписати будь-яку іншу технологію досить просто. Є також кілька портів самого bash для Windows (git включає один). І останнє, але не менш важливе: Windows 10 тепер має вбудовану підтримку двійкових файлів Linux .


3
У мене немає Linux, я працюю в Windows 7. Чи доступне це лише для користувачів Linux?
Tony H

7
Він доступний для більшості операційних систем (Linux, Unix, MacOS ...), окрім Windows.
Альваро Гонсалес,

1
Я трохи пошукав сценарії bash у вікнах, і, схоже, цю тему трохи висвітлено: stackoverflow.com/questions/6413377/ ... Я спробую щось побачити, як це працює.
Tony H

4
Маєте Linux? Найкраща відповідь дня
Адам Еріксон,

121

Що таке файл із розширенням .sh?

Це сценарій оболонки Борна . Вони використовуються в багатьох варіантах UNIX-подібних операційних систем. Вони не мають "мови" і інтерпретуються вашою оболонкою (інтерпретатором команд терміналу) або якщо перший рядок у формі

#!/path/to/interpreter

вони будуть використовувати саме цього перекладача. У вашому файлі є перший рядок:

#!/bin/bash

а це означає, що він використовує Bourne Again Shell, так званий баш. Це для всіх практичних цілей заміна старого доброго ш.

Залежно від перекладача, у вас буде інша мова, якою написано файл.

Майте на увазі, що в світі UNIX не розширення файлу визначає, що це за файл (див. Як виконати сценарій оболонки).

Якщо ви походите зі світу DOS / Windows, ви будете знайомі з файлами з розширеннями .bat або .cmd (пакетні файли). Вони не схожі за змістом, але схожі за дизайном.

Як виконати сценарій оболонки

На відміну від деяких безглуздих операційних систем, * nix не покладається виключно на розширення, щоб визначити, що робити з файлом. Також використовуються дозволи. Це означає, що якщо ви спробуєте запустити сценарій оболонки після його завантаження, це буде те саме, що спроба "запустити" будь-який текстовий файл. Розширення ".sh" існує лише для зручності розпізнавання цього файлу.

Вам потрібно буде зробити файл виконуваним. Припустимо, що ви завантажили свій файл як file.sh, після чого можете запустити у своєму терміналі:

chmod +x file.sh

chmodце команда для зміни дозволів файлу, +xвстановлює дозволи на виконання (в даному випадку для всіх) і, нарешті, у вас є своє ім’я файлу.

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

Файлові дозволи в XUbuntu

Якщо ви не хочете змінювати дозволи. Ви також можете змусити оболонку запустити команду. У терміналі ви можете запустити:

bash file.sh

Оболонка повинна бути такою ж, як у першому рядку вашого сценарію.

Наскільки це безпечно?

Вам може здатися дивним те, що вам потрібно виконати інше завдання вручну, щоб виконати файл. Але це частково через сильну потребу в безпеці.

В основному, коли ви завантажуєте та запускаєте скрипт bash, це те саме, що хтось каже вам "виконуйте всі ці команди послідовно на вашому комп'ютері, я обіцяю, що результати будуть хорошими та безпечними". Запитайте себе, чи довіряєте ви стороні, яка надала цей файл, запитайте себе, чи впевнені ви, що завантажили файл з того самого місця, де ви думали, можливо, навіть загляньте всередину, щоб побачити, чи щось виглядає не на своєму місці (хоча для цього потрібно що ви знаєте щось про команди * nix та програмування Bash).

На жаль, крім наведеного вище попередження, я не можу дати покроковий опис того, що ви повинні робити, щоб запобігти злим подіям із вашим комп’ютером; так що просто майте на увазі, що кожного разу, коли ви отримуєте та запускаєте виконуваний файл від когось, ви насправді говорите: "Звичайно, ти можеш за допомогою мого комп'ютера щось робити".


10
Це має бути обрана відповідь.
Pacerier

36

shфайли - це виконувані файли оболонки unix (linux), вони еквівалентні (але набагато потужніші) batфайлам у Windows.

Отже, вам потрібно запустити його з консолі Linux, просто ввівши його ім’я так само, як і у файлах bat у вікнах.


2
Залежно від конкретної ОС, вам може знадобитися запуститиchmod +x file.sh
Пранав А.

Я б сказав, що bash більше схожий на VBS для Windows, а не на пакет для Windows, оскільки batch був мовою DOS.
Переключення

4

Зазвичай файл .sh - це сценарій оболонки, який ви можете виконати в терміналі. Зокрема, згаданий вами сценарій - це скрипт bash, який ви можете побачити, якщо відкрити файл і заглянути в перший рядок файлу, який називається шебанг або магічний рядок.


1

Я знаю, що це старе запитання, і я, мабуть, не допоможу, але багато дистрибутивів Linux (наприклад, ubuntu) мають функцію "Live cd / usb", тому, якщо вам дійсно потрібно запустити цей сценарій, спробуйте завантажити комп'ютер в Linux. Просто запишіть .iso на флешку (ось як http://goo.gl/U1wLYA ), запустіть комп’ютер із підключеним диском і натисніть клавішу F для меню завантаження. Якщо ви оберете "... USB ...", ви завантажитеся в операційну систему, яку ви щойно поставили на диск.


однак файл буде запускатись лише в поточній версії. користувачеві потрібно буде скопіювати файли назад в основну ОС (Windows).
Пранав А.

-2

відкрийте розташування в терміналі, а потім введіть ці команди 1. chmod + x filename.sh 2. ./filename.sh і все

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.