Pravidelné výrazy Bash: Průvodce tvorbou, použitím, příklady

Pravidelné výrazy příkazového shellu Bash jsou určeny pro jeden z hlavních nástrojů, které umožňují interakci mezi uživatelem a operačním systémem. Prostřednictvím shellu může uživatel spravovat soubory a adresáře přítomné v systému souborů zařízení, zpracovávat jejich obsah a provádět jiné aplikace pomocí klávesnice svého terminálu jako vstupního bloku a alfanumerické terminálové obrazovky jako zdrojové zařízení.

Historie příkazového jazyka

Pravidelné výrazy Bash jsou vyvinuty Brianem Foxem pro projekt GNU jako alternativní změna pro shell Bourne. Příkazový jazyk byl vydán v roce 1989 a rozšířen jako standardní přihlašovací shell pro distribuce Linux a MacOS přes Apple (dříve OS X). Verze je k dispozici také pro systém Windows 10 a je standardním modulem pro Solaris 11.


Bash je instruktážní procesor, který tradičně pracuje v terminálu založeném na textu, kde vývojář spouští příkazy vyvolané akcemi. Pravidelné výrazy Bash jsou čteny a spouštěny ze souboru s názvem Shell shell script. Spolu s Unixem rozpoznává jména souborů (porovnání symbolových symbolů), protokoly, dokumenty, nahrazení směrnic a strukturu řízení pro kritéria testování. Hlavními slovy jsou syntaxe a další klíčové individuality jazyka reprodukovány z csh a ksh. Bash je shell kompatibilní s POSIX, ale s některými rozšířeními. Jméno skořápky je zkratkou z Bourne-shell. Brian Fox začal kódovat "Basha" 10. ledna 1988Po Richard Stallman byl spokojen s nedostatečným pokrokem ve vývoji volné pláště, které by mohly spustit existující skripty. Bash Fox vydala beta verzi ze dne 8. června 1989 a zůstal hlavní developerského projektu od poloviny roku 1992 do poloviny roku 1994, po kterém on byl propuštěn z PSV a byl nahrazen Chet Rami.


Během tohoto období Bash byl nejvíce populární program mezi uživateli Linuxu, stává interaktivní shell standardně v různých distribucích operačního systému a MacOS od Apple. Bash také vložený v Microsoft Win s Cygwin, v DOSu s projektem DJGPP a aplikací pro Android využívající jinou emulaci terminálu. Na začátku září 2014 byl nalezen slušné narušení bezpečnosti „Bache“ verze 103 uvolněna v srpnu 1989, nazvaný Shellshock, což vedlo k řadě útoků přes internet. Chyba považována za závažná, protože CGI skripty pomocí Bash stávají zranitelnější, což umožňuje spustit libovolný kód. Záplaty k opravě chyb které jsou k dispozici ihned po jejich zjištění, ale ne všechny počítače byly aktualizovány.

je vybaven syntaxe plášť

Bash je podmnožinou příkazů Bourne shell a používá rozšíření konzole, kompletní příkazového řádku, základní ladění a manipulaci s výjimkou použití pastí mezi jinými funkcemi. Provádí většina Bourne shell skripty beze změny, pouze pro skripty, které jsou interpretovány rozdílně, nebo se snaží spustit příkaz systému. Regulární výrazy Bash grep a GNU nástrojepoužijte komprimovaný způsob skenování chyb a nastavte stav ukončení, který umožňuje vlákna migrovat do tradičních cílů.
V případě, že tlačítko na kartě Developer lisy ve skořápce, Bash automaticky použije po uplynutí příkazové řádky, aby odpovídaly zadané názvy programů, souborů a proměnných. Zakončení příkazového řádku je nekonečně flexibilní a zvládnutelné a často se skládá z funkcí, které ukládají názvy a argumenty konkrétních programů a úkolů. Syntaxe Bash má dostatečný počet rozšíření, které chybí ve shellu Bourne. Regulární výrazy Bash: provádět aritmetické výpočty tselnochyslennыh vyhodnocení použité (()) příkaz a syntax argumentu $ (()) zjednodušuje pereadresovыvanye IO. Například, má schopnost přesměrovat závěru (standardní výstup) a poruchy (stderr) současně podporuje & amp; & gt; operátora. Je snadnější zadat než ekvivalent příkazu Bourne & gt; soubor 2 & amp; 1 '. Bash používá náhradní proces podporuje regulární výraz syntaxe „Linux“ a náhradní Závěr týmů (správa), tradičně používá název souboru. Při použití „funkce“ klíčových slov reklamní Bash nekompatibilní skripty Bourne a Korn, jako shell Korn má stejný problém při použití „funkce“, ale má stejnou syntaxi reklamní funkce jako výše uvedené membrány je POSIX kompatibilní.
Pro tyto a další rozdíly scénáře zřídka vykonávaných interpreters Bourne a Korn, pokud nebyly výslovně napsán v souvislosti s toutokompatibilitu, kterou je třeba vzít v úvahu při plánování práce s regulárními výrazy Bash. Asociativní matice umožňují falešnou podporu indexovaných polí, podobně jako AWK. Bash 4.x nebyl integrován do nové verze systému MacOS kvůli omezením licence. Příklad asociativního pole.

, příkazový režim provedení

Plášť má dva režimy provádění příkazů, a paralelní šarže. Týmy v dávkovém režimu jsou odděleny znakem ";". Pravidelné výrazy Bash, příklad:
  • command1;
  • příkaz2.
  • V tomto případě, je-li příkaz 1 dokončení příkazu 2. A tak můžete provést příkaz na pozadí 1 za použití (symbol & amp;) na konci plnění, bude proces běží na pozadí, odbočka vpravo Management Shell a umožňuje uživateli používat provedené příkazy.
    V obou týmů 1 a 2, musí být provedeny v plášti takto:
  • Command1 & Co. command2
  • V tomto případě je příkaz 1 proveden na pozadí & amp; symbol, vrátí okamžitě ovládací prvek shellu, který provede příkaz 2 v popředí. Regulární výrazy Bash grep může zastavit a vrátit kontrolu nad zadáním Ctrl + Z, zatímco proces běží v popředí. Vypsat všechny procesy, a to jak v pozadí a v režimu zastavení lze dosáhnout běžící úlohy.

    Stav procesu lze změnit pomocí různých příkazů. Tým proces „fg“ přináší do popředí, a „bg“ -nabir zastaví proces běží na pozadí. Bg "a" fg "mohou přijmout ID úlohy jako vlastníprvní argument, který naznačuje, v jakém procesu jednat. Bez toho použijí výchozí proces označený znaménkem plus na výstupu "úloh". Příkaz "zabít" lze předčasně ukončit odesláním signálu. Identifikační číslo úkolu musí být zadáno po procentuálním znaménku:
  • kill -s SIGKILL% 1 nebo kill -9%.
  • Bash dodává "podmíněnému" oddělovačům příkazů, které provádějí příkazy "kontingentní" podle kódu výstupu nastaveného příkazem precedence. Externí tým s názvem "bashbug" hlásí chyby shellu. Po vyvolání příkazu spustí výchozí editor pro uživatele s vyplněným formulářem. Formulář je zaslán stranám do Bashu nebo případně na jiné e-mailové adresy, což zajišťuje globální náhradu pravidelných výrazů Bash. Rezervované proměnné Bash.

    Skripty pro spuštění interaktivního prostředí

    Když Bash začne fungovat, provádí různé soubory bodů. Dokonce i pro podobné příkazy skriptu, které mají oprávnění k provedení instrukcí tlumočníka, například:
  • #! /Bin /bash.
  • Inicializační soubory používané výrazy Bash s přiřazením to nevyžadují. Postup spouštění souboru:
  • Při spuštění shellu [edit] čte a spustí /etc /profile, pokud existuje.
  • Tento soubor iniciuje /etc/bash.bashrc.
  • Po definici tohoto souboru vyhledá ~ /.bash_profile čtením a provedením 1, stávajícího a čitelného.
  • Pokud shell pochází z [edit], definuje a provede ~ /.bash_logout.
  • Při spuštění jako shellu [edit] definuje aprovede /etc/bash.bashrc a pak ~ /.bashrc.
  • Toto má možnost zakázat možnost "-norc".
  • Parametr souboru --rcfile "způsobuje, že Bash jej čte a spustí.
  • Porovnání s Bourne shell a csh startup [edit], vyjdou z shellu "Born" a csh. Umožňují zkrátit sdílení souborů z Bourne a umožnit jednotlivým spouštěcím funkcím, které jsou známy uživatelům csh.
  • Přenositelnost standardu POSIX 1003.2

    Volání Bash s volbou -posix nebo směrováním set -o posix ve skriptu činí regulární výraz pro stínění Bash přesně v souladu s normou POSIX 1003.2. Shell skripty určené pro přenositelnost by měly přinejmenším vzít v úvahu shell Bourne, který hodlá nahradit. Bash má některé funkce, které chybí v tradičním shellu Bourne. Patří sem:
  • Některé pokročilé možnosti volání.
  • Nahrazení příkazů za použití notace $ (). Tato funkce je součástí standardu POSIX 1003.2.
  • Rozšíření závorek.
  • Některé operace s poli a asociativními poli.
  • Rozšíření zkušebního vzoru se dvěma závorkami.
  • Aritmeticko-hodnotící konstrukt regulárních výrazů Bash v "if".
  • ​​
  • Některé operace line manipulace.
  • Nahrazení procesu.
  • Operátor shody s normálními výrazy.
  • "Bash" specifické vestavěné koprocesy.
  • Bash aritmetické výrazy používají "readline" pro zadání zástupců a editaci příkazového řádku pomocí výchozích vazeb klíče (Emacs). Vi-vazby mohou být povoleny při spuštění "set -o vi".

    Prodloužení držáků z náhrady

    Nahrazení závorek, také nazývaných střídání, je funkce zkopírovaná z shellu "C". Vytváří soubor alternativních kombinací. Generované výsledky nemusí nutně existovat ve formě souborů. Výsledky každého rozšířeného řetězce jsou seřazeny a uloženy v pořadí vpravo. Uživatelé by neměli v přenosných shellových skriptech používat rozšíření na konzoli, protože shell Bourne nevytváří stejný výstup. Když je rozšíření hranatých závorek kombinováno se znaky znaků, nejdříve se rozšiřují závorky a pak se přijaté znaky nahradí symboly. Kromě střídání lze prodloužení držáku použít pro po sobě následující rozsahy mezi dvěma celými čísly nebo symboly oddělenými dvojitými tečkami. Novější verze pravidelných výrazů Bash umožňují třetímu číslu označit přírůstek. Když je prodloužení držáku kombinováno s proměnným prodloužením, provede se po rozšíření držáku, což v některých případech může vyžadovat použití zabudovaného "eval", tedy:
  • $ start = 1;
  • end = $ 10 echo {$ start $ end} # nelze rozšířit v pořadí vyhodnocení {110};
  • $ Eval echo {$ začít $ konec} expanze # proměnná se stane, když výsledný řetězec je vyhodnocena: 123456789 10.
  • syntaktické aspekty jazyka "Basha"

    Shell skripty musí být uloženy v textovém formátu ASCII vytvořeném programem "editor", který nezadává další znaky nebo sekvence pro formátování textu. Například editory, které jsou vhodné pro tvorbu skriptu ve formátu shell, jsouvi nebo Emacs, které jsou k dispozici v systémech UNIX /Linux nebo programy jako Poznámkový blok, TextEdit a UltraEdit v systému Microsoft Windows. Je to správná praxe vložit do prvního řádku každého pravidelného skriptu Bash sekvenci "#! /Bin /bash ", který ukazuje absolutní cestu programu v souborovém systému stroje, na kterém má skript spustit. Může být tedy spuštěn přímo v příkazovém řádku, aniž by byl zadán název souboru jako argument pro příkaz "bash". Pokyn překladačského programu používaného operačním systémem k překladu a spuštění instrukcí skriptu je uveden v prvním řádku samotného skriptu, bezprostředně po pořadí znaků "#!". Předpokládá se, že soubor spustitelného interpretu je v adresáři /bin, ale v různých systémech může být nainstalován do jiných adresářů, například:
  • /usr /bin, /usr /local /bin.
  • V obecném případě může být symbol "#" použit k zápisu komentáře do zdroje skriptu. Libovolný znak v řádku skriptu po znaku "#" je interpretorem příkazů ignorován. Ve skutečnosti se často používá k vkládání komentářů do zdroje skriptu, který popisuje jeho práci nebo vysvětluje dopad konkrétních příkazů. Stejně jako při vkládání příkazů v interaktivním režimu, i při kódování skriptu, každá programová instrukce může být zapsána na jeden řádek nebo rozdělena do několika řádků a končí každým řádkem, kromě posledního, se symbolem "". Další instrukce mohou být uvedeny na stejném řádku pomocí ";". Programové instrukce mohou být "odsazené", aby se zdrojový kód četl, ale měli byste je věnovat pozornostpoužití mezery. Tlumočník Bash je "čitelný" než jiní tlumočníci nebo překladatelé a v některých případech není povoleno vkládat libovolné mezery mezi členy, pokyny pro komponenty, v jiných případech je pro správnou interpretaci instrukcí důležité použití prostoru. Neexistují žádné znaky, které by oddělovaly bloky instrukcí vložené do řídicí struktury, které by měly být například opakovány ve struktuře iteračního řízení. Na druhé straně existují klíčová slova pro jazyk, která vám umožní správně identifikovat začátek a konec bloku. Tato klíčová slova se liší v závislosti na instrukcí používaných k řízení toku programu. V syntaxi instance "shody" regulárních výrazů Bash mají některé znaky zvláštní význam, tj. Pokud jsou přítomny v řetězci znaků nebo jako argument příkazu, pak vykonávají velmi přesnou funkci.

    Interaktivní spuštění

    S minimální jednoduchostí lze říci, že shell je program, který interaguje vždy s jednou a touž operací. Očekává, že příkaz bude zadán jako vstup, vyhodnotí jej, aby se ujistil, že příkaz je syntakticky správný a provede jej, a vrátí se k čekání na další příkaz. Tento proces končí, když shell obdrží signál indikující, že vstup je kompletní a žádné další příkazy nebudou odeslány do něj. V tomto okamžiku dokončí shellový program a uvolní přidělenou paměť a další zdroje počítače dostupné operačnímu systému. Skript je spuštěnautomaticky operačním systémem, když uživatel vstoupí do samotného systému, to znamená, že jej může uživatel provést pomocí příkazu zadaného na již otevřeném shellu nebo pomocí speciálních grafických nástrojů, pokud pracuje s grafickým systémem uživatelského rozhraní. Například můžete použít příkazový shell v počítači Apple Macintosh se systémem Mac OS X spuštěním nástroje Terminal umístěného ve složce Utility ve složce Přílohy. Na ploše Linux s grafickým správcem desktopů, jako je GNOME nebo KDE, můžete otevřít shell výběrem aplikace Terminal z nabídky Programy - & gt; Příslušenství ». Po aktivaci příkazového shellu můžete zobrazit název použitého shellu spuštěním následujících příkazů:
  • $ echo;
  • $ SHELL /bin /bash.
  • Pokud výchozí shell není Bash, můžete zkontrolovat, zda je přítomen v systému v jednom z adresářů uvedených v proměnné prostředí PATH pomocí příkazu "který" a spustit jej pomocí příkazu "bash":
  • $ echo $ SHELL /bin /tcsh $, které bash /bin /bash $ bash bash-203 $.
  • Skořepina tedy pracuje interaktivně, přijímá vstupní data pro každý jednotlivý příkaz a parametry zadané na příkazovém řádku a provádí samotný příkaz. Výstup se zobrazí ve stejném okně terminálu. Každý příkaz předaný plášti končí vyvoláním klávesy Invio /Enter. Můžete uvolnit několik příkazů v jednom řádku a oddělit je od sebe znakem ";". Je také možné rozdělit vložení příkazu do dvou nebo více řádků, které končí každým meziproduktemline s znakem "".

    Apikální, dvojité a zadní nohy

    Obvykle se v programovacích jazycích používají uvozovky a dvojité uvozovky pro vymezení řetězců a použití jednoho nebo druhého znaku závisí na syntaxi použitém v konkrétním jazyce. Ve skriptovacích jazycích má použití uvozovek a zpětných odkazů jiný význam a Bash není v tomto případě výjimkou. Jednotlivé uvozovky se používají k vymezení řetězců znaků. Tlumočník není součástí obsahu řádku a jednoduše používá sekvenci symbolů oddělených uvozovkami. Takže znaky, které jinak mají jinou hodnotu, mohou být také součástí řádku. Jediným znakem, který nelze použít v uvozovacím řetězci, jsou stejné uvozovky. Chcete-li definovat takovou linii, je nutné ji vymezit pomocí tlapky. Pro vymezení řádků se používají dvojité řádky, ale pokud je řetězec omezen na tento znak, interpret provádí tzv. "Interpolaci" a dovoluje hodnotu všech proměnných v regulárních výrazech Bash v řádku. V praxi, pokud řetězec obsažený v dvojitých uvozovkách obsahuje odkaz na proměnnou, pak je proměnná v řetězci nahrazena její hodnotou. Chcete-li vytisknout znaky, například dvojité uvozovky nebo dolary, které by jinak byly interpretovány a mít jinou hodnotu, musíte předepsat předponu každého z nich jako znak zpětného lomítka. Chcete-li vytisknout znak zpětného lomítka v řadě, omezený dvojitými tlapkami, je třeba obrátit obě zpětné lomítka. Charakter charakteru je nejcharakterističtější chování,typické pro skriptovací jazyky a chybí v hlavních programovacích jazycích nejvyšší úrovně. Citace umožňuje rozlišovat řetězec, který je interpretován jako příkaz Bash a měl by být proveden, vrací jako hodnota počáteční data pro stejný standardní výstupní produkt kanálu.

    Příklady příkazů

    Pokud spustit shell, takže to zvládá sekvenci příkazů uvedenou v textovém souboru ASCII:
  • $ o vysílání pracovníků;
  • echo $ SHELL;
  • hostaname /home /marco /bin /bash aquilante $ echo & gt; $ SHELL /bin /bash
  • Pokud je třeba připravit soubor s názvem «script.sh», který je uložen v obsahu domovského adresáře souboru může být takto:
  • echo -n "Oggi e‚il" 2 datum +% d /% m /% Y .
  • Spuštění tohoto velmi jednoduchý skript, s uvedením názvu souboru na příkazovém řádku, který se nazývá shell:
  • $ bash script.sh Oggi e ‚il 10/6/2011.
  • Slupka může také přijmout řadu příkazů provést kanál, přes který přesměruje výstup do jiného příkazového standardní vstupní Bash:
  • $ cat script.sh | bash oggi e 10/6/2011.
  • Můžete vybrat řádu regulárních výrazů programu Bash s označením "#!". Absolutní cesta skořápky, které mají být použity pro skript spustit přímo, bez OS běžícího Bash skript a procházení vchodem:!
  • $ cat script.sh # /bin /bash echo -n "Oggi e‚il" data +% d /% m /% Y $ chmod 755 script.sh $ ls -l script.sh -rwxr-xr-x 1 Marco uživatelé 4918 Apr 23:58 script.sh $ ./script.sh Oggi e ti 10/6 /2011
  • V předchozím příkladu poslední příkaz okamžitě způsobí skript, který je uložen v souboru „script.sh“, přítomný v aktuálním adresáři určeném relativní cestu „./“ k názvu souboru.Musíte zadat cestu k adresáři, ve kterém je umístěn spustitelný skript, protože z bezpečnostních důvodů není aktuální adresář v seznamu adresářů, ve kterých shell by měl hledat externí spustitelné příkazy. Seznam takových adresářů je uložen v běžných proměnných výrazech Bash.

    Výhody operačního systému Bash

    Jedná se o nejefektivnější jazyk skriptů skriptů. Umožňuje uživateli snadný způsob automatizace práce, pokud je již obeznámen s aplikací shellu v interaktivním režimu. Pokud vývojář programuje systém, pak musí vědět, jak funguje shell. Pokud porovnáte skripty se studiem konfigurace nebo automatizačního systému "yaml" nebo "json", jsou mnohem více univerzální. Bash skripty jsou jednodušší, protože skript pracuje ve výchozím nastavení. Bash je jednodušší jazyk a vynutí vývojářům, aby se soustředili na další systémové složitosti. Bash funguje skvěle pro psaní shellů. Všechno ostatní v podstatě buď používá shell pro příkazy, nebo implementuje vlastní shell, kopírování dobrých částí. Kromě toho existují dobří konstruktéři Bashových regulárních výrazů, které výrazně zjednodušují práci s shell. Pomocí nástroje Bash mohou vývojáři využívat interaktivních webových zkušeností pomocí operace příkazového řádku Linuxu bez omezení časů a prostoru. Chcete-li tuto funkci používat, nepotřebujete tvrdé pravidla a úsilí a uživatelé mohou přistupovat k zdrojům a prostředí Azure s jedním kliknutím, ověřeným na pracovní stanici, i když je používají.Azure, Azure Portal a Azure Mobilní dokumentace Mobilní přílohy. Na rozdíl od tradičního prostředí příkazové řádky není třeba instalovat a vybrat nástroje před zahájením práce a ušetřit čas a úsilí pomocí Bash. Veškeré nástroje CLI, jako je text, sestavení, kontejnery a výstup, jsou k dispozici v Bashu a pomocí nástroje CLI 2.0 můžete používat bezpečná a snadná autentizační nástroje. Podívali jsme se na příklady pravidelných výrazů Bash. Hodně štěstí v zvládnutí!

    Související publikace