Domovská » jak » Průvodce pro začátečníky k Shell skriptování Základy

    Průvodce pro začátečníky k Shell skriptování Základy

    Termín "skriptování prostředí" se často zmíní ve fórech Linuxu, ale mnoho uživatelů o něm není obeznámeno. Učení této snadné a výkonné programovací metody vám pomůže šetřit čas, učit se řádku příkazového řádku lépe a vyřadit únavné úkoly správy souborů.

    Co je Shell skriptování?

    Být uživatel Linuxu, znamená to, že si hrajete s příkazovým řádkem. Líbí se vám nebo ne, existují jen některé věci, které se díky tomuto rozhraní dělají mnohem snadněji než ukazováním a klepnutím. Čím více použijete a učíte se příkazovým řádkem, tím více vidíte jeho potenciál. No, samotný příkazový řádek je program: shell. Většina linuxových distribucí dnes používá Bash, a to je to, do čeho skutečně vstupujete příkazy.

    Nyní někteří z vás, kteří používali systém Windows před použitím systému Linux, si mohou pamatovat dávkové soubory. Jednalo se o malé textové soubory, které byste mohli plnit příkazy k provádění a Windows by je spustil. Bylo to chytré a elegantní způsob, jak si udělat nějaké věci, například spustit hry ve střední škole počítačové laboratoře, kdybyste nemohli otevřít systémové složky nebo vytvořit zkratky. Dávkové soubory ve Windows, přestože jsou užitečné, jsou levné imitace shell skriptů.

    Shell skripty nám umožňují naprogramovat příkazy v řetězcích a nechat je spouštět jako skriptovaná událost, stejně jako dávkové soubory. Umožňují také mnohem užitečnější funkce, jako je například nahrazení příkazu. Můžete vyvolat příkaz, jako datum, a použít jeho výstup jako součást schématu pojmenování souborů. Můžete automatizaci záloh a každý zkopírovaný soubor může mít aktuální datum připojené ke konci jeho názvu. Skripty nejsou jen invokace příkazů. Jsou programy samy o sobě. Skriptování umožňuje používat funkce programování - například smyčky "pro", příkazy if / then / else a tak dále - přímo v rozhraní operačního systému. A nemusíte se učit jinému jazyku, protože používáte to, co už víte: příkazový řádek.

    To je opravdu síla skriptování, myslím. Dostanete se do programu s příkazy, které už víte, zatímco se učíte se sponkami většiny hlavních programovacích jazyků. Potřebujete něco opakovat a nudit? Script to! Potřebujete zkratku pro opravdu komplikovaný příkaz? Script to! Chcete pro někoho vytvořit skutečně snadné rozhraní příkazového řádku? Script to!

    Než začnete

    Než začneme naše skriptovací série, pojďme se podívat na některé základní informace. Budeme používat bash shell, který většina Linuxových distribucí používá nativně. Bash je k dispozici i pro uživatele Mac OS a Cygwin pro Windows. Protože je to tak univerzální, měli byste být schopni psát bez ohledu na vaši platformu. Kromě toho, pokud existují všechny příkazy, na které odkazujeme, skripty mohou pracovat na více platformách s malým nebo žádným vyladěním.

    Skriptování může snadno využít oprávnění "administrátora" nebo "superuživatele", takže je nejlepší vyzkoušet skripty, než je začnete pracovat. Používejte také zdravý rozum, jako například ujistěte se, že máte zálohy souborů, na kterých se chystáte spustit skript. Je také opravdu důležité použít správné možnosti, jako je -i pro příkaz rm, aby se vaše interakce vyžadovala. To může zabránit některým ošklivým chybám. Jako takový si přečtěte skripty, které stáhnete, a buďte opatrní s daty, které máte, jen v případě, že se něco pokazí.

    Jádrem jejich skriptů jsou pouze prosté textové soubory. K jejich zápisu můžete použít libovolný textový editor: gedit, emacs, vim, nano ... Tento seznam pokračuje. Nezapomeňte ji uložit jako prostý text, ne jako bohatý text nebo dokument aplikace Word. Vzhledem k tomu, že mám rád snadné používání, které nano poskytuje, budu to používat.

    Oprávnění a jména skriptů

    Skripty jsou prováděny jako programy a pro to, aby se to stalo, musí mít správná oprávnění. Skripty lze spustit tak, že na nich spustíte následující příkaz:

    chmod + x ~ / somecrazyfolder / script1

    To umožní komukoli spouštět tento konkrétní skript. Pokud chcete omezit jeho použití pouze na uživatele, můžete místo toho použít:

    chmod u + x ~ / somecrazyfolder / script1

    Pro spuštění tohoto skriptu byste museli cd do správného adresáře a spustit skript takto:

    cd ~ / somecrazyfolder

    ./ script1

    Chcete-li věci pohodlnější, můžete umístit skripty do složky "bin" ve vašem domovském adresáři:

    ~ / bin

    V mnoha moderních distribucích již není tato složka vytvořena ve výchozím nastavení, ale můžete ji vytvořit. Obvykle se ukládají spustitelné soubory, které patří vašemu uživateli a nikoli jiným uživatelům. Tím, že umístíte skripty, můžete je spustit zadáním jejich jména, stejně jako ostatní příkazy, namísto toho, abyste museli cd kolem a používat předponu './'.

    Než uvedete skript, měli byste však zkontrolovat, zda máte nainstalovaný program, který používá tento název:

    který [příkaz]

    Mnoho lidí jmenuje své testy skorých skriptů, a když se je pokusí spustit v příkazovém řádku, nic se nestane. Je to proto, že to je v rozporu s příkazem testu, který nečiní nic bez argumentů. Vždy se ujistěte, že vaše jména skriptů nejsou v rozporu s příkazy, jinak byste mohli zjistit, že děláte věci, které nemáte v úmyslu udělat!

    Pokyny pro skriptování

    Jak jsem již zmínil, každý soubor skriptu je v podstatě prostý text. To neznamená, že bys mohl psát to, co chceš všechno beznadějně. Při pokusu o provedení textového souboru budou skořepiny analyzovat, zda se jedná o skripty či nikoliv, a jak je vše správně zpracovat. Z tohoto důvodu existuje několik pokynů, které musíte znát.

    1. Každý skript by měl být "#! / Bin / bash"
    2. Každý nový řádek je nový příkaz
    3. Řádky komentářů začínají znakem #
    4. Příkazy jsou obklopeny ()

    Hash-Bang Hack

    Když shell analyzuje textový soubor, nejpřímějším způsobem identifikace souboru jako skriptu je vytvoření prvního řádku:

    #! / bin / bash

    Používáte-li jiný shell, nahraďte zde jeho cestu. Řádky komentářů začínají s hashes (#), ale přidávají se tón (!) A shell shell poté, co je to jakýsi hack, který obejde toto pravidlo komentáře a vynutit skript spuštění s shell, který tento řádek ukazuje.

    Nová řádek = Nové příkazy

    Každá nová řada by měla být považována za nový příkaz nebo za součást většího systému. Příkazy if / else / else například přeberou více řádků, ale každá součást tohoto systému je v novém řádku. Nedovolte, aby příkaz přetočil do dalšího řádku, protože to může zkrátit předchozí příkaz a způsobit chybu na dalším řádku. Pokud to váš textový editor dělá, měli byste vypnout text wrapping být na bezpečné straně. Textové obtékání můžete vypnout v nano bitu stisknutím klávesy ALT + L.

    Komentář Často #s

    Pokud spustíte řádek s číslem #, linka bude ignorována. To se změní na řádek komentářů, kde si můžete připomenout, jaký byl výstup předchozího příkazu, nebo co bude dělat další příkaz. Znovu vypněte zalomení textu nebo přerušujte komentář na více řádků, které začínají jako hash. Použití spousty komentářů je dobré zachovat, protože vám a ostatním lidem můžete snadno upravovat své skripty. Jedinou výjimkou je výše uvedený Hash-Bang hack, takže nesledujte #s s! S. ;-)

    Příkazy jsou obklopeny závorami

    Ve starších dnech byly příkazy nahrazeny jedinými značkami (', sdílí klíč ~). Nebudeme se k tomu ještě dotýkat, ale protože většina lidí odešla a prozkoumala poté, co se naučila základy, je asi dobrým nápadem zmínit, že místo toho byste měli použít závorky. To je hlavně proto, že když hnízdíte - příkazy umístěte do jiných příkazů - závorky fungují lépe.

    Váš první skript

    Začněme jednoduchým skriptem, který umožňuje kopírovat soubory a připojit data do konce názvu souboru. Řekněme to "datecp". Nejprve zkontrolujte, jestli je toto jméno v rozporu s něčím:

    Vidíte, že není žádný výstup tohoto příkazu, takže jsme se všichni rozhodli používat toto jméno.

    Vytvořme prázdný soubor ve složce ~ / bin:

    dotyk ~ / bin / datecp

    A teď, změňte povolení nyní, než zapomeneme:

    Začněme začít vytvářet náš skript. Otevřete soubor ve zvoleném textovém editoru. Jak jsem řekl, líbí se mi jednoduchost nano.

    nano ~ / bin / datecp

    A udělejte předběžný první řádek a komentář k tomu, co tento skript dělá.

    Dále deklarujeme proměnnou. Pokud jste někdy použili algebru, pravděpodobně víte, co to je. Proměnná nám umožňuje ukládat informace a dělat věci s nimi. Proměnné se mohou "rozšiřovat", pokud jsou uvedeny jinde. To znamená, že namísto zobrazení svého jména se zobrazí jejich uložený obsah. Později můžete říct, že stejná proměnná ukládá různé informace, a jakákoli instrukce, která nastane poté, použijí nové informace. Je to opravdu fantastický zástupný symbol.

    Co budeme vkládat proměnnou? Dobře, uložíme datum a čas! Chcete-li to provést, zavoláme příkazu pro datum.

    Podívejte se na níže uvedený snímek, jak sestavit výstup datového příkazu:

    Můžete vidět, že přidáním různých proměnných, které začínají na%, můžete změnit výstup příkazu na to, co chcete. Další informace naleznete v příručce pro příkaz Datum.

    Použijeme poslední opakování datového příkazu "date +% m_% d_% y-% H.% M.% S" a použijeme jej v našem skriptu.

    Pokud bychom tento scénář teď zachránili, mohli bychom ho spustit a to by nám dalo výstup datového příkazu, jak bychom očekávali:

    Ale udělejte něco jiného. Pojďme jméno proměnné, jako datum_formátované na tento příkaz. Správná syntaxe pro toto je následující:

    variabilní = $ (příkaz -options arguments)

    A pro nás bychom to stavěli takto:

    date_formatted = $ (datum +% m_% d_% y-% H.% M.% S)

    To je to, co nazýváme nahrazení příkazu. V podstatě říkáme, že vždy, když se zobrazí proměnná "date_formatted", spusťte příkaz uvnitř závorek. Potom, bez ohledu na výstup, který příkazy dávají, by měl být namísto názvu proměnné zobrazen údaj "date_formatted".

    Zde je příklad skript a jeho výstup:

    Všimněte si, že na výstupu jsou dva mezery. Je zobrazen prostor v uvozovkách příkazu echo a prostor před proměnnou. Nepoužívejte mezery, pokud nechcete, aby se objevily. Také si povšimněte, že bez této přidané řádky "echo" by skript neposkytl absolutně žádný výstup.

    Vraťme se k našemu scénáři. Pojďme dále přidat kopírovací část příkazu.

    cp -iv $ 1 $ 2 $ $ date_formatted

    Tím se vyvolá příkaz kopie s možnostmi -i a -v. První uživatel vás požádá o ověření před přepsáním souboru a druhý zobrazí, co je na příkazovém řádku.

    Dále můžete vidět, že jsem přidal možnost "$ 1". Při psaní skriptů bude znak dolaru ($) následovaný číslem označen jako očíslovaný argument skriptu, když byl vyvolán. Například v následujícím příkazu:

    cp -iv Trogdor2.mp3 vyzvánění.mp3

    První argument je "Trogdor2.mp3" a druhý argument je "ringtone.mp3".

    Podíváme-li se zpět na náš skript, můžeme vidět, že odkazujeme na dva argumenty:

    To znamená, že při spuštění skriptu budeme muset poskytnout dva argumenty, aby skript fungoval správně. První argument, $ 1, je soubor, který bude zkopírován a nahrazen jako první argument příkazu "cp -iv".

    Druhý argument, $ 2, bude sloužit jako výstupní soubor pro stejný příkaz. Ale můžete také vidět, že je to jiné. Přidali jsme určitou dobu a odkazovali jsme na proměnnou "date_formatted" shora. Zvědavá, co to dělá?

    Zde je co se stane při spuštění skriptu:

    Můžete vidět, že výstupní soubor je uveden jako cokoliv, co jsem zadal za $ 2, za ním pak období, pak výstup datového příkazu! Má smysl, správně?

    Nyní, když spustím příkaz datecp, spustí tento skript a dovolí mi zkopírovat libovolný soubor do nového umístění a automaticky přidá datum a čas do konce názvu souboru. Užitečné pro archivaci věcí!


    Shell skriptování je jádrem toho, že váš OS pracuje pro vás. Nemusíte se naučit nový programovací jazyk, aby se tak stalo. Vyzkoušejte skriptování s některými základními příkazy doma a začněte přemýšlet o tom, proč to můžete použít.

    Scénář? Máte nějaké rady pro začátečníky? Podělte se o své myšlenky v komentářích! V této sérii je toho víc!