GNU/Linux >> Znalost Linux >  >> Linux

Co je soubor .sh?

Co je soubor s příponou .sh?

Je to Bourne shell skript. Používají se v mnoha variantách operačních systémů podobných UNIXu. Nemají žádný „jazyk“ a jsou interpretovány vaším shellem (interpretem příkazů terminálu) nebo pokud je první řádek ve tvaru

#!/path/to/interpreter

budou používat tento konkrétní tlumočník. Váš soubor má první řádek:

#!/bin/bash

a to znamená, že používá Bourne Again Shell, tzv. bash. Je to pro všechny praktické účely náhrada za staré dobré sh.

V závislosti na interpretu budete mít jiný jazyk, ve kterém je soubor napsán.

Mějte na paměti, že ve světě UNIX to není přípona souboru, která určuje, o jaký soubor jde (viz Jak spustit skript shellu).

Pokud pocházíte ze světa DOS/Windows, budete znát soubory, které mají příponu .bat nebo .cmd (dávkové soubory). Obsahem si nejsou podobné, ale svým designem jsou podobné.

Jak spustit skript shellu

Na rozdíl od některých hloupých operačních systémů se *nix nespoléhá výhradně na přípony, aby určil, co dělat se souborem. Používají se také oprávnění. To znamená, že pokud se pokusíte spustit skript shellu po jeho stažení, bude to stejné, jako když se pokusíte „spustit“ jakýkoli textový soubor. Přípona ".sh" je zde pouze pro vaše pohodlí, abyste mohli tento soubor rozpoznat.

Budete muset udělat soubor spustitelný. Předpokládejme, že jste svůj soubor stáhli jako file.sh , pak můžete spustit ve svém terminálu:

chmod +x file.sh

chmod je příkaz pro změnu oprávnění souboru, +x nastaví oprávnění ke spouštění (v tomto případě pro všechny) a nakonec máte název svého souboru.

Můžete to udělat také v GUI. Většinu času můžete kliknout pravým tlačítkem na soubor a vybrat vlastnosti, v XUbuntu vypadají možnosti oprávnění takto:

Pokud si nepřejete měnit oprávnění. Můžete také přinutit shell ke spuštění příkazu. V terminálu můžete spustit:

bash file.sh

Shell by měl být stejný jako na prvním řádku vašeho skriptu.

Jak je to bezpečné?

Možná vám přijde divné, že pro spuštění souboru musíte provést další úkol ručně. Ale to je částečně kvůli silné potřebě zabezpečení.

V podstatě, když si stáhnete a spustíte bash skript, je to totéž, jako když vám někdo řekne „spusťte všechny tyto příkazy v pořadí na svém počítači, slibuji, že výsledky budou dobré a bezpečné“. Zeptejte se sami sebe, zda důvěřujete straně, která tento soubor dodala, zeptejte se sami sebe, zda jste si jisti, že jste soubor stáhli ze stejného místa, jak jste si mysleli, možná se dokonce podívejte dovnitř, abyste zjistili, zda něco nevypadá na svém místě (i když to vyžaduje že víte něco o příkazech *nix a programování bash).

Bohužel kromě výše uvedeného varování nemohu poskytnout podrobný popis toho, co byste měli udělat, abyste zabránili tomu, aby se s vaším počítačem staly zlé věci; takže mějte na paměti, že kdykoli získáte a spustíte spustitelný soubor od někoho, ve skutečnosti říkáte:"Jistě, můžete k něčemu použít můj počítač."


Pokud otevřete svůj druhý odkaz v prohlížeči, uvidíte zdrojový kód:

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

Takže je to bash skript. Máte Linux?

V každém případě skript není nic jiného než série načítání HTTP. Jak wget, tak curl jsou dostupné pro většinu operačních systémů a téměř všechny jazyky mají knihovny HTTP, takže je poměrně triviální přepisovat jakoukoli jinou technologií. Existují také některé porty Windows samotného bash (git jeden obsahuje). V neposlední řadě má Windows 10 nyní nativní podporu pro linuxové binární soubory.


sh soubory jsou unixové (linuxové) spustitelné soubory shellu, jsou ekvivalentem (ale mnohem výkonnějším) bat soubory v systému Windows.

Musíte jej tedy spustit z linuxové konzole, stačí zadat jeho název stejně jako u souborů bat v systému Windows.


Linux
  1. Co pro vás může udělat shell dotfile

  2. Co se přesně stane, když spustím soubor v prostředí Shell?

  3. Co se počítá jako úprava nebo změna souboru?

  1. Co je číslo inodu v Linuxu?

  2. Deskriptory souborů a skriptování prostředí?

  3. Co dělá Exec 3?

  1. Shell - Zápis proměnného obsahu do souboru

  2. Co je soubor .so.2?

  3. Co je use() ve skriptování shellu?