23Aug

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

click fraud protection

Termín "shell skriptování" je často uveden ve fórech Linux, ale mnoho uživatelů není s ním známo. 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í?

Uživatel Linuxu znamená, ž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ávají mnohem snadněji než tím, že ukazují a kliknou.Čím více používáte a učíte se příkazovému řádku, tím více vidíte jeho potenciál. Příkazový řádek sám je program: shell. Většina linuxových distribucí dnes používá Bash a právě do něj vstupujete do příkazů.

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. Byl to chytrý a elegantní způsob, jak si udělat nějaké věci, například spustit hry v počítačové laboratoři na střední škole, kdybyste nemohli otevírat systémové složky nebo vytvářet zkratky. Dávkové soubory ve Windows, přestože jsou užitečné, jsou levné imitace shell skriptů.Skripty

instagram viewer

Shell nám umožňují naprogramovat příkazy v řetězcích a nechat je systém spouštět jako skriptovanou 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 jména. 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 /then/ else atd. - 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. Můžete se naprogramovat pomocí příkazů, které už víte, zatímco učíte staples 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 s

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. Jelikož je tak univerzální, měli byste být schopni psát bez ohledu na vaši platformu. Navíc 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 dříve, 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 věci pokazí.

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

Oprávnění a názvy skriptů Skripty

jsou prováděny jako programy a aby k tomu došlo, musí mít správná oprávnění.Skripty lze spustit spuštěním následujícího příkazu:

chmod + x ~ /somecrazyfolder/ skript1

Umožní každému spuštění daného skriptu. Pokud chcete omezit jeho použití pouze na uživatele, můžete použít místo toho:

chmod u + x ~ /somecrazyfolder/ script1

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

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ří k vašemu uživateli, nikoli k ostatní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 './'.

Předtím, než uděláte název skriptu, měli byste zkontrolovat, zda máte nainstalovaný program, který používá tento název:

, který [příkaz]

Řada lidí jmenuje své testy skorých skriptů "a když se pokusíspusťte jej 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 se může stát, ž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 "#!
  2. bash "
  3. Každý nový řádek je nový příkaz
  4. Řádky pro poznámky začínají pomocí #
  5. Příkazy jsou obklopeny()

Hash-Bang Hack

Když shell analyzuje textový soubor, nejpřímější způsob identifikace souboruskript je tím, že vytvoříte první řádek:

#!/bin/ bash

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

Nová řádek = Nový příkaz

Každý nový řádek by měl být považován za nový příkaz nebo součást většího systému. Pokud například příkazy /then/ else převezmou 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ý obal můžete vypnout v nano bitu stisknutím klávesy ALT + L.

Komentář Často s #s

Pokud spustíte řádek s #, linka bude ignorována. Tím se změní na řádek komentářů, kde si můžete připomenout, jaký byl výstup předchozího příkazu, nebo co další příkaz provede. 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 skripty. Jedinou výjimkou je výše uvedený Hash-Bang hack, takže sledujte # s s! S.;-) Příkazy

jsou obklopeny závorkami

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ý nápad zmínit, že místo toho byste měli použít závorky. Je to hlavně proto, že když hnízdíte - vložte příkazy do jiných příkazů - závorky fungují lépe.

Váš první skript

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

Vidíte, že není žádný výstup tohoto příkazu, takže jsme všichni nastavili tento název.

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

dotykový ~ /bin/ datecp

A změníme povolení nyní, než zapomeneme:

Začneme 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 pojďme jít dopředu a dát předpoklad první řádek a komentář o tom, 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", když se na ně odkazují jinde. To znamená, že namísto zobrazení svého jména se zobrazí jejich uložený obsah. Lze později říct, že stejná proměnná ukládá různé informace a jakákoli instrukce, která nastane poté, co použije nové informace. Je to opravdu fantastický zástupný symbol.

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

Podívejte se na následující obrazovku, jak sestavit výstup datového příkazu:

Vidíte, že přidáním různých proměnných, které začínají znakem%, 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í příkazu datum, "datum +% m_% d_% y-% H.% M.% S" a použijeme jej v našem skriptu.

Pokud bychom tento scénář měli zachránit právě teď, 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í:

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

A pro nás bychom to postavili 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 "date_formatted".

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

Všimněte si, že ve 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é řady "echo" by skript neměl absolutně žádný výstup.

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

cp -iv $ 1 $ 2. $ date_formatted

Toto vyvolá příkaz kopie s volbami -i a -v. Bývalý uživatel vás požádá o ověření před přepsáním souboru a ten bude zobrazovat, co se nachází na příkazovém řádku.

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

cp -iv Trogdor2.mp3 ringtone.mp3

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

Při pohledu zpět na náš skript vidíme, ž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 čas a odkazovali jsme na proměnnou "date_formatted" shora. Zvědavá, co to dělá?

Zde je to, co se děje při spuštění skriptu:

Vidíte, ž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, ne?

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!

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.

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