Pravidelné výrazy Bash: Sprievodca vytváraním, použitím, príkladmi

Pravidelné výrazy balíka príkazov Bash sú určené pre jeden z hlavných nástrojov, ktoré umožňujú interakciu medzi používateľom a operačným systémom. Vzhľadom k tomu, užívateľ shell môžete spravovať súbory a adresáre, ktoré sú v súborovom systéme stroja, procesu ich obsah a vykonávať ďalšie aplikácie pomocou klávesnice svojho svorkovnicu ako vstup a alfanumerickom displeji terminálu ako výstupné zariadenie.

História príkazového jazyka

Pravidelné výrazy Bash vyvinutý Brian Fox pre projekt GNU ako alternatíva k zmene na Bourne shell. Príkazový jazyk bol vydaný v roku 1989 a rozšírený ako predvolený prihlasovací shell pre distribúcie Linux a MacOS cez Apple (predtým OS X). Verzia je tiež k dispozícii pre systémy Windows 10 a východiskové škrupinou autorovi Solaris 11


Bash - tento návod procesor tradične pracuje v textovom termináli, kde developer beží príkazy, ktoré spôsobujú akcie. Pravidelné výrazy Bash sa čítajú a spúšťajú zo súboru s názvom shell shell shell. Avšak uznáva názvy súborov (Unix nákupný znak symbol), správy, dokumenty, pokyny a vedenie substitučná štruktúry pre testovacích kritérií. V hlavných slovách sa syntax a iné kľúčové jazyky reprodukujú z csh a ksh. Bash je POSIX kompatibilný shell, ale s niektorými rozšíreniami. Názov schránky je skratka z Bourne-again shellu. Brian Fox začal kódovať "Basha" 10. januára 1988po tom, čo Richard Stallman bol nespokojný s nedostatočným pokrokom v rozvoji voľného shell, ktorý by mohol spustiť existujúce scenáre. Fox vydal Bash ako beta verziu 8. júna 1989 a zostal hlavným vývojárom projektu od polovice roka 1992 do polovice roka 1994, po ktorom bol prepustený z FSF a Chet Rami zaujal jeho miesto.


Počas tohto obdobia bol Bash najpopulárnejším programom medzi používateľmi systému Linux, čím sa stal štandardný interaktívny shell v rôznych distribuciách tohto operačného systému, rovnako ako MacOS od spoločnosti Apple. Bash bol tiež vložený do programu Microsoft Win od spoločnosti Cygwin, v projekte DOS s projektom DJGPP a v systéme Android pomocou rôznych aplikácií emulácie terminálu. Začiatkom septembra 2014 bol slušný bezpečnostný prielom vo verzii Bashe verzie 103, vydanom v auguste 1989, pomenovaný Shellshock, ktorý vyústil do niekoľkých útokov cez internet. Chyba bola považovaná za vážnu, pretože CGI skripty používajúce Bash sa stali zraniteľnými, čo umožnilo ľubovoľné spustenie kódu. Chyby opravy boli k dispozícii ihneď po ich zistení, ale nie všetky počítače boli inovované.

Bash syntax funkcie

Bash je množstvo Bourne shell príkazy a používa prípony pre zátvorky, dokončenie príkazového riadku, základné ladenie, a výnimky manipuláciu s použitím pascí, okrem iných funkcií. Vykoná väčšinu skriptov programu Bourne bez zmeny, s výnimkou scenárov, ktoré sa interpretujú inak, alebo sa pokúšajú spustiť systémový príkaz. Pravidelné výrazy Bash grep, rovnako ako nástroje GNUpoužite komprimovaný spôsob skenovania chýb a nastavte stav ukončenia, ktorý umožňuje migrácii vlákien do tradičných destinácií.
V prípade, že tlačidlo na karte Developer lisy v škrupine, Bash automaticky použije po uplynutí príkazového riadku, aby zodpovedali zadané názvy programov, súborov a premenných. Ukončenie príkazového riadku je nekonečne flexibilné a zvládnuteľné a často sa skladá z funkcií, ktoré ukladajú názvy a argumenty konkrétnych programov a úloh. Syntax Bash má dostatočný počet rozšírení, ktoré chýba v shell Bourne. Regulárne výrazy Bash: vykonávať aritmetické výpočty tselnochyslennыh vyhodnotenie použitej (()) príkaz a syntax argumentu $ (()) zjednodušuje pereadresovыvanye IO. Napríklad, má schopnosť presmerovať záveru (štandardný výstup) a poruchy (stderr) súčasne podporuje & amp; & gt; operátora. Je jednoduchšie zadávať ako ekvivalent príkazu Bourne & gt; súbor 2 & 1 '. Bash používa náhradný proces podporuje regulárny výraz syntax "Linux" a náhradné Záver tímov (správa), tradične používa názov súboru. Pri použití "funkcie" kľúčových slov reklamnej Bash nekompatibilné skripty Bourne a Korn, ako shell Korn má rovnaký problém pri použití "funkcie", ale má rovnakú syntax reklamnej funkcie ako vyššie uvedené membrány je POSIX kompatibilné.
Vzhľadom na tieto a iné rozdiely sú scenáre zriedkakedy vykonávané tlmočníkmi Bourne a Korn, pokiaľ neboli osobitne napísané na základe tohtokompatibilitu, ktorú musíte brať do úvahy pri plánovaní práce s regulárnymi výrazmi Bash. Asociačné polia umožňujú falošnú podporu indexovaných polí, podobne ako AWK. Bash 4.x nebol integrovaný do novej verzie systému MacOS kvôli obmedzeniam licencie. Príklad asociačného poľa.

, príkazový režim prevedenie

Plášť má dva režimy vykonávanie príkazov, a paralelné šarže. Tímy v dávkovom režime sú oddelené znakom ";". Pravidelné výrazy Bash, príklad:
  • command1;
  • príkaz2.
  • V tomto prípade, ak je príkaz 1 dokončení príkazu 2. A tak môžete vykonať príkaz na pozadí 1 za použitia (symbol & amp;) na konci plnenie, bude proces beží na pozadí, odbočka vpravo Management Shell a umožňuje užívateľovi používať vykonané príkazy.
    V oboch tímov 1 a 2, musia byť vykonané v plášti takto:
  • Command1 & Co. Command2.
  • V tomto prípade sa príkaz 1 vykoná na pozadí & amp; symbol, okamžite vráti ovládací prvok shell, ktorý vykoná príkaz 2 v popredí. Regulárne výrazy Bash grep môže zastaviť a vrátiť kontrolu nad zadaním Ctrl + Z, zatiaľ čo proces beží v popredí. Vypísať všetky procesy, a to ako v pozadí a v režime zastavenia možno dosiahnuť bežiace úlohy.

    Stav procesu je možné meniť pomocou rôznych príkazov. Tím proces "fg" prináša do popredia, a "bg" -nabir zastaví proces beží na pozadí. Bg "a" fg "môžu prijať ID úlohy ako svoje vlastnéprvý argument, ktorý naznačuje, v akom procese konať. Bez toho použijú predvolený proces označený znakom plus na výstupe "úloh". Príkaz "kill" môže byť použitý na dokončenie procesu predčasne odoslaním signálu. Identifikátor úlohy musí byť zadaný po percentuálnom znamení:
  • kill -s SIGKILL% 1 alebo kill -9%.
  • Bash dodáva oddeľovačom povelov, ktoré vykonávajú príkazy "kontingent" podľa východiskového kódu nastaveného príkazom precedens, "podmienené". Externý tím s názvom "bashbug" hlási chyby shell. Keď sa príkaz volá, spustí predvolený editor pre používateľa s vyplneným formulárom. Formulár sa zasiela stranám do Bashu alebo prípadne na iné e-mailové adresy, čím sa zabezpečí globálna náhrada bežných výrazov Bash. Vyhradené premenné Bash.

    Skripty pre spustenie interaktívneho prostredia

    Keď Bash začne fungovať, vykonáva rôzne bodové súbory. Aj pri podobných príkazoch skriptu, ktoré majú povolenie na vykonanie pokynov tlmočníka, napríklad:
  • #! /Bin /bash.
  • Inicializačné súbory, ktoré používajú výrazy Bash s priradením, to nevyžadujú. Spôsob spustenia súboru:
  • Pri spustení shellu [edit] číta a spustí /etc /profile, ak existuje.
  • Tento súbor iniciuje /etc/bash.bashrc.
  • Po definovaní tohto súboru bude vyhľadávať ~ /.bash_profile čítaním a spustením 1, existujúceho a čitateľného.
  • Ak shell pochádza z [edit], definuje a vykoná ~ /.bash_logout.
  • Keď sa spustí ako shell [upraviť], definuje avykoná /etc/bash.bashrc a potom ~ /.bashrc.
  • Toto má možnosť zakázať možnosť "-norc".
  • Parameter súboru --rcfile "spôsobuje, že Bash ju čítal a vykonal.
  • Porovnanie s Bourne shell a csh startup [upraviť], vyjsť z shell "Born" a csh. Umožňujú vám zúžiť zdieľanie súborov z Bourne a umožniť jednotlivým spúšťacím funkciám, ktoré sú známe používateľom csh.
  • Prenosnosť štandardu POSIX 1003.2

    Volanie Bash s možnosťou -posix alebo smerovacia sada -o posix v skripte spôsobí, že regulárny výraz pre tienenie Bash presne zodpovedá norme POSIX 1003.2. Shell skripty určené na prenosnosť by mali prinajmenšom brať do úvahy shell Bourne, ktorý zamýšľa nahradiť. Bash má niektoré funkcie, ktoré chýbajú v tradičnom škrupine Bourne. Medzi ne patrí:
  • Niektoré rozšírené možnosti hovoru.
  • Nahradenie príkazov pomocou notácie $ (). Táto funkcia je súčasťou normy POSIX 1003.2.
  • Rozšírenie zátvoriek.
  • Niektoré operácie s polimi a asociatívnymi poliami.
  • Rozšírenie skúšobného dizajnu s dvoma zátvorkami.
  • Aritmeticko-hodnotiaca konštrukcia regulárnych výrazov Bash v "if".
  • ​​
  • Niektoré operácie riadkovej manipulácie.
  • Nahradenie procesu.
  • Prevádzkovateľ zodpovedajúce regulárnym výrazom.
  • "Bash" špecifické vstavané Coprocesses.
  • Bash aritmetické výrazy používajú "readline" na zadávanie skratiek a editáciu príkazového riadku pomocou predvolených klávesových väzieb (Emacs). Vi-viazania môžu byť povolené pri spustení "set -o vi".

    Rozšírenie držiakov zo substitúcie

    Nahradenie zátvoriek, nazývané aj striedavé, je funkcia skopírovaná z obálky "C". Vygeneruje súbor alternatívnych kombinácií. Generované výsledky nemusia nevyhnutne existovať vo forme súborov. Výsledky každého rozšíreného reťazca sú zoradené a uložené v poradí vpravo. Používatelia by nemali používať rozšírenia zátvoriek v prenosných shell skriptoch, pretože shell Bourne nevytvára rovnaký výstup. Keď sa rozšírenie zátvoriek kombinuje so znakmi znakov, zátvorky sa najprv rozbalia a potom sa prijaté znaky nahradia symbolmi. Okrem striedania môže byť rozšírenie držiaka použitá pre postupné rozsahy medzi dvoma celými číslami alebo symbolmi oddelenými dvojitými bodmi. Novšie verzie používania bežných výrazov Bash umožňujú tretiemu celému číslu označiť prírastok. Pri rozšírení držiak v kombinácii s premennou predĺženia, je vykonaná po expanznú držiakom, ktorý v niektorých prípadoch môže vyžadovať použitie "Eval" zostavená nasledovne:
  • $ štart = 1;
  • end = $ 10 echo {$ start $ end} # nemôže sa rozšíriť v poradí hodnotenia {110};
  • $ Eval echo {$ začať $ koniec} expanzie # premenná sa stane, keď výsledný reťazec je vyhodnotená: 123456789 10.
  • syntaktické aspekty jazyka "Basha"

    Shell skripty musia byť uložené v textovom formáte ASCII vytvorenom pomocou programu "editor", ktorý nezadáva ďalšie znaky alebo sekvencie na formátovanie textu. Napríklad editory, ktoré sú vhodné na vytvorenie shell skriptovvi alebo Emacs, ktoré sú k dispozícii v systéme UNIX /Linux alebo programy ako Poznámkový blok, TextEdit a UltraEdit v systéme Microsoft Windows. Je dobrým postupom vložiť do prvého riadku každého Bashovho pravidelného skriptu postupnosť "#! /Bin /bash ", ktorý ukazuje absolútnu cestu programu v súborovom systéme stroja, na ktorom má skript spustiť. Preto môže byť spustený priamo v príkazovom riadku bez zadania názvu súboru ako argumentu pre príkaz "bash". Pokyn prekladového programu používaného operačným systémom na prekladanie a vykonanie pokynov skriptu je uvedený v prvom riadku samotného skriptu bezprostredne za poradovým znakom "#!". Predpokladá sa, že súbor spustiteľného tlmočníka je v priečinku /bin, ale v rôznych systémoch môže byť inštalovaný v iných adresároch, napríklad:
  • /usr /bin, /usr /local /bin.
  • Vo všeobecnosti môže byť symbol "#" použitý na napísanie komentára do zdroja skriptu. Akýkoľvek znak v riadku skriptu po znaku # je ignorovaný interpretom príkazov. V skutočnosti sa často používa na vloženie komentárov do zdrojového kódu skriptu, aby opísal svoju prácu alebo vysvetlil vplyv konkrétnych príkazov. Rovnako ako pri vkladaní príkazov v interaktívnom režime, aj pri kódovaní skriptu, môže byť každá programová príručka zapísaná na jeden riadok alebo rozdelená na niekoľko riadkov a končí každým riadkom okrem symbolu "". Dodatočné pokyny možno na rovnakej linke uvádzať pomocou ";". Programové inštrukcie môžu byť "odsadené", aby sa zdrojový kód prečítal, ale mali by ste venovať pozornosťpoužitie medzery. Tlmočník Bash je "čitateľný" ako iní tlmočníci alebo kompilátori av niektorých prípadoch nie je dovolené vkladať ľubovoľné medzery medzi členy, inštrukcie pre komponenty, v iných prípadoch je pre správnu interpretáciu pokynov dôležité použitie priestoru. Neexistujú znaky na oddelenie blokov inštrukcií vložených do riadiacej štruktúry, ktoré by sa napríklad mali opakovať v štruktúre iteračného ovládacieho prvku. Na druhej strane existujú relevantné jazykové kľúčové slová, ktoré vám umožňujú správne identifikovať začiatok a koniec bloku. Tieto kľúčové slová sa líšia v závislosti od pokynov, ktoré sa používajú na riadenie toku programu. V syntaxe inštancií "zhody" s normálnymi výrazmi Bash majú niektoré znaky osobitný význam, to znamená, že ak sú prítomné v reťazci znakov alebo ako príkaz k príkazu, potom vykonávajú veľmi presnú funkciu.

    Interaktívny štart

    S minimálnou jednoduchosťou môžeme povedať, že shell je program, ktorý interaguje vždy s jednou a tou istou operáciou. Očakáva, že príkaz bude zadaný ako vstup, vyhodnotí ho, aby sa ubezpečil, že príkaz je syntakticky správny a vykoná ho, potom sa vráti k čakaniu na ďalší príkaz. Tento proces končí, keď obal dostane signál indikujúci, že vstup je úplný a nebudú mu poslané žiadne ďalšie príkazy. V tomto okamihu dokončí shell program, čím uvoľní alokovanú pamäť a ďalšie zdroje počítača dostupné pre operačný systém. Skript sa spustíautomaticky operačným systémom, keď používateľ vstúpi do samotného systému, to znamená, že môže byť vykonaný používateľom pomocou príkazu určeného na už otvorenom paneli alebo pomocou špeciálnych grafických nástrojov, ak pracuje s grafickým systémom používateľského rozhrania. Môžete napríklad použiť príkazový shell na počítači Apple Macintosh so systémom Mac OS X spustením pomôcky Terminal umiestneného v priečinku Utility v prílohách. Na pracovnej ploche systému Linux s grafickým správcom stolových počítačov, ako je napríklad GNOME alebo KDE, môžete otvoriť shell výberom aplikácie Terminal z ponuky Programy - & gt; Príslušenstvo ». Po aktivácii príkazového shellu môžete zobraziť názov shell, ktorý používame, vykonaním nasledujúcich príkazov:
  • $ echo;
  • $ SHELL /bin /bash.
  • Ak predvolený shell nie je Bash, môžete skontrolovať, či je v systéme prítomný v jednom z adresárov uvedených v premennej prostredia PATH pomocou príkazu "which" a vykonať ho pomocou príkazu "bash":
  • $ echo $ SHELL /bin /tcsh $, ktoré bash /bin /bash $ bash bash-203 $.
  • Obal teda pracuje interaktívne, prijíma vstupné dáta pre každý jednotlivý príkaz a parametre zadané na príkazovom riadku a vykoná samotný príkaz. Výstup sa zobrazí v rovnakom okne terminálu. Každý príkaz prechádzajúci na shell končí zaktivovaním klávesu Invio /Enter. Môžete prepustiť niekoľko príkazov v jednom riadku a oddeliť ich jeden od druhého znakom ";". Je tiež možné rozdeliť vloženie príkazu do dvoch alebo viacerých riadkov, ktoré sa skončia s každým medziproduktomline s znakom "".

    Apiktické, dvojité a zadné nohy

    V programovacích jazykoch sa typicky používajú úvodzovky a dvojité úvodzovky na vymedzenie reťazcov a použitie jedného alebo druhého znaku závisí od syntaxe prijatej v konkrétnom jazyku. V skriptovacích jazykoch používanie úvodzoviek a spätných odkazov má iný význam a Bash nie je výnimkou v tomto. Jednotlivé úvodzovky sa používajú na vymedzenie reťazcov znakov. Tlmočník nie je súčasťou obsahu linky a jednoducho používa sekvenciu symbolov oddelených citátmi. Teda znaky, ktoré inak majú inú hodnotu, môžu byť súčasťou riadku. Jediným znakom, ktorý nemožno použiť v citovanom reťazci, sú rovnaké úvodzovky. Ak chcete definovať takú čiaru, je potrebné ju vymedziť labkami. Na delimitáciu riadkov sa používajú dvojité čiary, ale ak je reťazec obmedzený na tento znak, interpret vykoná takzvanú "interpoláciu" a umožňuje hodnotu akýchkoľvek premenných v regulárnych výrazoch Bash v riadku. V praxi, ak reťazec obsiahnutý v dvojitých úvodzovkách obsahuje odkaz na premennú, potom názov premennej v reťazci sa nahradí jej hodnotou. Ak chcete vytlačiť znaky, ako sú napríklad dvojité úvodzovky alebo doláre, ktoré by inak boli interpretované a mali inú hodnotu, musíte predpísať predponu každého z nich ako znak spätného lomítka. Ak chcete vytlačiť znaky spätného lomítka v rade, ktoré sú obmedzené dvojitými labkami, je potrebné obrátiť obidve obrátené lomky. Charakter charakteru je najcharakteristickejším správaním,typické pre skriptovacie jazyky a chýba v hlavných programovacích jazykoch najvyššej úrovne. Citácia umožňuje rozlišovať reťazec, ktorý je interpretovaný ako príkaz Bash a mal by byť vykonaný, vracia ako hodnota počiatočnej dáta pre rovnaký štandardný výstupný produkt kanála.

    Príklady príkazov

    Ak spustiť shell, takže to zvláda sekvenciu príkazov uvedenú v textovom súbore ASCII:
  • $ o vysielaní pracovníkov;
  • echo $ SHELL;
  • hostaname /home /marco /bin /bash aquilante $ echo & gt; $ SHELL /bin /bash
  • Ak je potrebné pripraviť súbor s názvom «script.sh», ktorý je uložený v obsahu domovského adresára súboru môže byť takto:
  • echo -n "Oggi e,il" 2 dátum +% d /% m /% Y ,
  • Spustenie tohto veľmi jednoduchý skript, s uvedením názvu súboru na príkazovom riadku, ktorý sa nazýva shell:
  • $ bash script.sh Oggi e, il 10/6/2011.
  • Šupka môže tiež prijať rad príkazov vykonať kanál, cez ktorý presmeruje výstup do iného príkazového štandardné vstupné Bash:
  • $ cat script.sh | bash oggi e 10/6/2011.
  • Môžete vybrať riadok regulárnych výrazov programu Bash s označením "#!". Absolútna cesta škrupiny, ktoré majú byť použité pre skript spustiť priamo, bez OS bežiaceho Bash skript a prechádzanie vchodom :!
  • $ cat script.sh # /bin /bash echo -n "Oggi e,il" dáta +% d /% m /% Y $ chmod 755 script.sh $ ls -l script.sh -rwxr-xr-x 1 Marco užívatelia 4918 Apr 23:58 script.sh $ ./script.sh Oggi e tí 10/6 /2011
  • V predchádzajúcom príklade posledný príkaz okamžite spôsobí skript, ktorý je uložený v súbore "script.sh", prítomný v aktuálnom adresári určenom relatívnu cestu "./" k názvu súboru.Musíte zadať cestu k adresáru, v ktorom sa nachádza spustiteľný skript, pretože z bezpečnostných dôvodov sa aktuálny adresár nenachádza v zozname adresárov, v ktorých shell by mal hľadať externé spustiteľné príkazy. Zoznam takýchto adresárov je uložený v bežných premenných výrazoch Bash.

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

    Jedná sa o najefektívnejší jazyk skriptov pre skripty. Umožňuje používateľovi jednoduchý spôsob automatizácie práce, ak už je oboznámený s aplikáciou shellu v interaktívnom režime. Ak vývojár programuje systém, potom musí vedieť, ako funguje shell. Ak porovnávate skripty so štúdiom konfigurácie alebo automatizačným systémom "yaml" alebo "json", sú oveľa všestrannejšie. Bash skripty sú jednoduchšie, pretože skript pracuje štandardne. Bash je jednoduchší jazyk a núti vývojárov zamerať sa na iné systémové zložitosti. Bash funguje skvelo pre písanie škrupín. Všetko ostatné v podstate buď používa shell pre príkazy, alebo implementuje svoj vlastný shell, kopírovať dobré časti. Navyše existujú dobrí konštruktéri Bashových regulárnych výrazov, ktoré výrazne zjednodušujú prácu s shellom. S programom Bash môžu vývojári využívať interaktívne webové skúsenosti pomocou skúseností s príkazmi linuxového rozhrania bez obmedzení času a priestoru. Ak chcete používať túto funkciu, nepotrebujete prísne pravidlá a úsilie a používatelia môžu pristupovať k autentifikovaným pracovným staniciam a zdrojom prostredia Azure s jedným kliknutím, aj keď ich používajú.Mobilné prílohy Azure, Azure Portal a Azure Mobile Documentation. Na rozdiel od tradičného prostredia príkazového riadku nie je potrebné inštalovať a vyberať nástroje pred začatím práce a môžete ušetriť čas a úsilie pomocou Bash. Všetky nástroje CLI, ako sú text, zostavy, kontajnery a výstupy, sú k dispozícii v balíku Bash a pomocou nástroja CLI 2.0 môžete používať zabezpečené a jednoduché nástroje na overenie totožnosti. Pozreli sme sa na príklady pravidelných výrazov Bash. Veľa šťastia v zvládnutí!

    Súvisiace publikácie