cs.phhsnews.com


cs.phhsnews.com / 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


Pojem "skriptování prostředí" se často uvádí ve fórech Linux, ale mnoho uživatelů o něm není obeznámeno. Učení této jednoduché 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 při správě souborů

Co je skriptování Shell?

Být uživatel Linuxu znamená, čára. 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ě jste do něj zadali příkazy.

Nyní někteří z vás, kteří používali systém Windows před použitím Linuxu, 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ů.

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ý z kopírovaných souborů může mít aktuální datum připojené na konec svého 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 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.

Myslím, že to je opravdu síla skriptování. 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? Skript

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. Jelikož je 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žívat oprávnění "administrátora" nebo "superuser", takže je nejlepší otestujte skripty dříve, než je uvedete do práce. 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 psaní 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žití, 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 spuštěním následujícího příkazu:

chmod + x ~ / somecrazyfolder / script1

To umožní komukoli spouštět daný 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 není tato složka vytvořena ve výchozím nastavení, to. 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ž pojmenujete skript, měli byste následující příkaz, který zkontroluje, zda máte nainstalovaný program, který používá toto jméno:

, které [příkaz]

Spousta lidí jmenuje své testy raných skriptů "a když se pokusí spustit v příkazovém řádku, nic se děje. 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é nechcete dě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.

  1. Každý skript by měl být "#! / Bin / bash"
  2. Každý nový řádek je nový příkaz
  3. Linky na 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ím prvního řádku:

# ! / bin / bash

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

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

Každá nová řádek 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 #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á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ý 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žit příkazy 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řipojovat data do konce názvu souboru. Řekněme to "datecp". Nejprve zkontrolujte, zda je toto jméno v rozporu s něčím:

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

Vytvořme prázdný soubor v ~ / bin:

dotkněte ~ / bin / datecp

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

Pak začneme vytvářet náš skript. Otevřete soubor ve zvoleném textovém editoru. Jak jsem řekl, mám rád jednoduchost nano

nano ~ / bin / datecp

A jdeme jít dopředu a dát předpoklad první řádek a komentář o tom, co tento skript dělá.

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 do proměnné? No, uložíme datum a čas! Chcete-li to provést, zavoláme příkazu Datum

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

To můžete vidět přidáním různých proměnných začínajících na%, můžete změnit výstup příkazu na to, co chcete. Pro další informace se můžete podívat na manuálovou stránku pro příkaz datum.

Použijeme poslední opakování příkazu datum, "datum +% m_% d_% y-% H.% M.% S" a použijte to v našem skriptu.

Kdybychom tento scénář teď uložili, mohli bychom ho spustit a dali by nám 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. Poté je třeba místo názvu proměnné namísto názvu proměnné zobrazit "whatever_data".

Zde je příklad skriptu 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é linky "echo" by skript neměl absolutně žádný výstup.

Pojďme se vrátit do našeho skriptu. Přidejme další část kopírovací části příkazu

cp -iv $ 1 $ 2. $ date_formatted

Tímto se 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.

Nyní 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".

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 období a odkazovali jsme na proměnnou "date_formatted" shora. Zjistili jste, co se děje?

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

Vidíte, že výstupní soubor je uveden jako cokoliv, co jsem zadal za $ 2, následovaný periodou, pak výstup datového příkazu ! Dává to smysl, že?

Nyní, když spustím příkaz timecp, spustí tento skript a dovolí mi zkopírovat libovolný soubor na nové místo 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 vaše 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!


Jak spravovat oznámení Slack a neznepokojovat nastavení

Jak spravovat oznámení Slack a neznepokojovat nastavení

Slack se stala životně důležitým komunikačním nástrojem pro mnoho podniků, zejména těch, kteří mají spoustu vzdálených zaměstnanců. Ale nikdo nechce dostávat pingy v každé hodině každého dne. Tady v How-To Geek máme rádi Slack a o tom jsme o tom napsali a dali vám nějaké vynikající ukázky, jak se stát Slack power uživatelem a nejlepší způsoby, jak hledat věci, které musíte absolutně najít.

(how-to)

Proč byste neměli hostit otevřenou síť Wi-Fi bez hesla

Proč byste neměli hostit otevřenou síť Wi-Fi bez hesla

Otevření domovské sítě Wi-Fi jsou stále příliš běžné. Situace se zlepšila, jelikož výrobci bezdrátových směrovačů začali dodávat bezdrátová hesla, která jsou ve výchozím nastavení zapnuta, ale stále tam jsou příliš mnoho nezabezpečených sítí Wi-Fi. Hosting otevřené sítě Wi-Fi může způsobit řadu problémů, ať už se snažíte dělat dobrou skutku sdílením vašeho připojení, nebo si ještě nezadali heslo.

(how-to)