Wyrażenia regularne Bash: Przewodnik po tworzeniu, używaniu, przykładach

Wyrażenia regularne Bash powłoka przeznaczona dla jednego z głównych narzędzi do komunikacji między użytkownikiem a systemem operacyjnym. Ponieważ użytkownik może zarządzać powłoki plików i katalogów znajdujących się w systemie plików urządzenia, procesu ich treść i wykonywanie innych aplikacji za pomocą klawiatury swojego bloku zacisków jako wejście i terminalu wyświetlacz alfanumeryczny jako urządzenia wyjściowego.

Historia języka poleceń

Wyrażenia regularne Bash opracowany przez Briana Foxa dla projektu GNU, jako alternatywa dla zmian dla powłoki Bourne. Językiem komenda została opublikowana w 1989 roku i szeroko rozpowszechnione jako powłoki logowania domyślnie dla dystrybucji Linuksa i MacOS przez firmę Apple (przed OS X). Dostępna jest także wersja dla Windows 10 i domyślny użytkownik Shell Solaris 11.


Bash - ten procesor poradnictwo tradycyjnie działa w terminalu tekstowym gdzie deweloper prowadzi poleceń, które powodują działania. Wyrażenia regularne Bash są odczytywane i uruchamiane z pliku o nazwie shell shell script. Jednak rozpoznaje nazwy plików Unix (porównanie symboli znaków), raportów, dokumentów, wytycznych i struktury zarządzania podstawienie dla kryteriów testowych. W głównym składni słowa kluczowego i innych indywidualnych mowy reprodukowane z csh i ksh. Bash jest powłoką zgodną z POSIX, ale z pewnymi rozszerzeniami. Nazwa powłoki jest skrótem od powłoki Bourne-ponownie. Brian Fox rozpoczął kodowanie "Basha" 10 stycznia 1988 rokupo tym, jak Richard Stallman był niezadowolony z braku postępu w opracowywaniu darmowej powłoki, która mogłaby uruchomić istniejące scenariusze. Fox wydał Bash jako wersję beta 8 czerwca 1989 r. I pozostał głównym twórcą projektu od połowy 1992 r. Do połowy 1994 r., Po czym został zwolniony z FSF, a jego miejsce zajął Chet Rami.


W tym okresie Bash był najpopularniejszym programem wśród użytkowników Linuksa, stając się domyślną powłoką interaktywną w różnych dystrybucjach tego systemu operacyjnego, a także MacOS od Apple. Bash został również osadzony w Microsoft Win z Cygwin, w DOS z projektem DJGPP i Androidem przy użyciu różnych aplikacji emulujących terminal. Na początku września 2014 r. Przyzwoity przełom w bezpieczeństwie w wersji 105 Bashe, wydanej w sierpniu 1989 r., Został nazwany Shellshock, co spowodowało szereg ataków za pośrednictwem Internetu. Błąd został uznany za poważny, ponieważ skrypty CGI wykorzystujące Bash stały się podatne na ataki, umożliwiając wykonanie dowolnego kodu. Łatki błędów stały się dostępne natychmiast po ich wykryciu, ale nie wszystkie komputery zostały uaktualnione.

Cechy składni Bash

Bash jest zbiorem poleceń powłoki Bourne'a i używa rozszerzeń do nawiasów, uzupełniania wiersza poleceń, podstawowego debugowania i obsługi wyjątków za pomocą pułapek i innych funkcji. Wykonuje większość skryptów powłoki Bourne bez zmian, z wyjątkiem scenariuszy, które są interpretowane inaczej lub próbują uruchomić polecenie systemowe. Wyrażenia regularne Bash grep, a także narzędzia GNUużyj skompresowanego sposobu skanowania błędów i ustaw status wyjścia, który pozwala wątkom migrować do tradycyjnych miejsc docelowych.
Jeśli karta Deweloper naciśnie przycisk w powłoce bash automatycznie stosuje wygaśnięciu linii poleceń, w celu dopasowania wpisywanych nazw programów, plików i zmiennych. Zakończenie linii komend jest nieskończenie elastyczne i łatwe w zarządzaniu, a często składa się z funkcji przechowujących argumenty i nazwy plików dla określonych programów i zadań. Składnia Bash ma wystarczającą liczbę rozszerzeń, których brakuje w powłoce Bourne'a. Wyrażenia regularne Bash: wykonywać obliczenia arytmetyczne tselnochyslennыh oceny stosowanej (()) polecenia i $ (()) Składnia argumentu upraszcza pereadresovыvanye IO. Na przykład, ma on zdolność do przekierowania wniosku (wyjścia) i zniszczenia (sys.stderr) jednocześnie wspomaga wzmacniacz i; & gt; operatora. Łatwiej jest wejść niż odpowiednik polecenia Bourne'a & gt; plik 2 & gt; & 1 '. Bash wykorzystuje proces wymiany obsługuje składni wyrażeń regularnych „Linux” i zastępczych zespołów Wnioski (podania), tradycyjnie używa nazwy pliku. Przy użyciu słowa kluczowego „funkcja” Ad atakujących niekompatybilne skryptów Bourne i Korn, jako powłoki Korn ma ten sam problem przy stosowaniu „funkcja”, ale ma te same funkcje ad składni wspomnianego membrana POSIX.
Ze względu na te i inne różnice scenariusze rzadko wykonywanych przez tłumaczy Bourne i Korn, o ile nie zostały specjalnie napisane w odniesieniu do tegokompatybilność, którą należy uwzględnić przy planowaniu pracy za pomocą wyrażeń regularnych Bash. Tablice asocjacyjne umożliwiają fałszywe wsparcie dla tablic indeksowanych, podobnie jak w AWK. Bash 4.x nie został zintegrowany z nową wersją systemu MacOS z powodu ograniczeń licencyjnych. Przykład tablicy asocjacyjnej.

Komenda trybu pracy

Powłoka ma dwa tryby wykonywania poleceń: wsadowy i równoległy. Drużyny w trybie wsadowym są oddzielone znakiem ";". Wyrażenia regularne Bash, przykład:
  • command1;
  • command2.
  • W tym przykładzie, gdy polecenie 1 jest zakończona, polecenie 2. I tak można wykonać polecenia tło 1 stosując (symbol & amp;) po zakończeniu realizacji, proces będzie działać w tle, odwracając skorupę Right Management i pozwala użytkownikowi na zastosowanie wykonane polecenia.
    W celu równoczesnego wykonywania poleceń 1 i 2, muszą one być wykonywane w powłoce w następujący sposób:
  • command1 & amp; command2
  • W tym przypadku polecenie 1 jest wykonywane w tle & amp; symbol, natychmiast zwracając kontrolę powłoki, która wykonuje polecenie 2 na pierwszym planie. Wyrażenia regularne Bash grep można zatrzymać i obracać formanty, wpisując Ctrl + Z, gdy proces jest uruchomiony na pierwszym planie. Listę wszystkich procesów, zarówno w tle, jak iw trybie zatrzymania, można uzyskać, uruchamiając zadania.

    Stan procesu można zmienić za pomocą różnych poleceń. Polecenie "fg" wyprowadza proces na pierwszy plan, a ustawienie "bg" zatrzymuje proces działający w tle. Bg "i" fg "mogą zaakceptować identyfikator zadania jako własnypierwszy argument wskazujący, w którym procesie działać. Bez tego używają domyślnego procesu oznaczonego znakiem plus w wynikach "zadań". Polecenie "kill" może być użyte do zakończenia procesu przedwcześnie, wysyłając do niego sygnał. Identyfikator zadania musi być określony po znaku procentowym:
  • zabić -s SIGKILL% 1 lub zabić -9%.
  • Bash dostarcza "warunkowe" do separatorów poleceń, które wykonują polecenia "warunkowe" zgodnie z kodem wyjścia ustawionym przez wcześniejsze polecenie. Zewnętrzny zespół o nazwie "bashbug" zgłasza błędy powłoki. Po wywołaniu polecenia uruchamia domyślny edytor dla użytkownika z wypełnionym formularzem. Formularz jest wysyłany do stron Bash lub ewentualnie na inne adresy e-mail, zapewniając globalne zastąpienie zwykłych wyrażeń Bash. Zarezerwowane zmienne Bash.

    Skrypty do uruchamiania interaktywnego środowiska

    Kiedy Bash zaczyna działać, wykonuje różne pliki punktów. Nawet dla podobnych poleceń skryptu, które mają uprawnienia do wykonywania instrukcji tłumacza, na przykład:
  • #! /Bin /bash.
  • Pliki inicjujące używane przez wyrażenia Bash z przypisaniem nie wymagają tego. Procedura wykonywania pliku:
  • Po uruchomieniu powłoki [edit] odczytuje i wykonuje /etc /profile, jeśli jest.
  • Ten plik inicjuje /etc/bash.bashrc.
  • Po zdefiniowaniu tego pliku przeszuka ~ /.bash_profile, odczytując i wykonując 1, istniejący i czytelny.
  • Jeśli powłoka pochodzi z [edit], definiuje i wykonuje ~ /.bash_logout.
  • Po uruchomieniu w powłoce [edit] definiuje iwykonuje /etc/bash.bashrc, a następnie ~ /.bashrc.
  • Ma to możliwość wprowadzenia zakazu za pomocą opcji "--norc".
  • Parametr "--rcfile" powoduje, że Bash odczyta i uruchomi go.
  • Porównanie z powłoką Bourne'a i uruchomieniem csh [edit], wychodzi z powłoki "Born" i csh. Pozwalają one zawęzić udostępnianie plików od Bourne'a i umożliwić indywidualne funkcje uruchamiania znane użytkownikom csh.
  • Przenośność w standardzie POSIX 1003.2

    Wywołanie Bash z opcją -posix lub wskazanie zestawu -o posix w skrypcie sprawia, że ​​wyrażenie regularne dla osłony Bash bardzo dokładnie pasuje do standardu POSIX 1003.2. Skrypty powłoki zaprojektowane pod kątem przenośności powinny przynajmniej uwzględniać powłokę Bourne, którą zamierza zastąpić. Bash ma pewne cechy, których brakuje w tradycyjnej powłoce Bourne'a. Należą do nich:
  • Niektóre zaawansowane opcje połączeń.
  • Zastępowanie poleceń za pomocą notacji $ (). Ta funkcja jest częścią standardu POSIX 1003.2.
  • Rozszerzenie nawiasów.
  • Niektóre operacje z tablicami i tablicami asocjacyjnymi.
  • Rozszerzenie projektu testu za pomocą dwóch zamków.
  • Konstrukcja arytmetyczno-ewaluacyjna wyrażeń regularnych Basha w wyrażeniu "jeśli".
  • ​​
  • Niektóre operacje manipulacji liniami.
  • Zastąpienie procesu.
  • Operator dopasowujący regularne wyrażenia.
  • Specyficzne wbudowane koprocesy "Bash".
  • Wyrażenia arytmetyczne Basha używają "readline", aby zapewnić skróty i edycję wiersza poleceń przy użyciu domyślnych powiązań klawiszy (Emacs). Powiązania Vi można włączyć po uruchomieniu "set -o vi".

    Przedłużenie nawiasów zastępujących

    Podstawienie nawiasów, zwane także naprzemiennie, jest funkcją kopiowaną z powłoki "C". Generuje zestaw alternatywnych kombinacji. Wygenerowane wyniki niekoniecznie muszą istnieć w postaci plików. Wyniki każdego rozwiniętego łańcucha są sortowane i przechowywane w kolejności po prawej stronie. Użytkownicy nie powinni używać rozszerzeń nawiasów w przenośnych skryptach powłoki, ponieważ powłoka Bourne'a nie generuje tych samych wyników. Kiedy rozszerzenie nawiasów jest połączone ze znakami znaków, nawiasy są najpierw rozwijane, a następnie odebrane znaki zastępowane są symbolami. Oprócz zmiany, rozszerzenie nawiasu może być użyte dla kolejnych zakresów między dwiema liczbami całkowitymi lub symbolami oddzielonymi podwójnymi kropkami. Nowsze wersje użycia zwykłych wyrażeń Bash pozwalają trzeciej liczbie całkowitej wskazać inkrement. Gdy rozszerzenie klamry jest połączone ze zmiennym rozszerzeniem, jest wykonywane po rozszerzeniu klamry, co w niektórych przypadkach może wymagać użycia wbudowanego "eval", a więc:
  • $ start = 1;
  • end = 10 $ echo {$ start $ end} # nie może się rozwinąć w porządku oceny {110};
  • $ eval echo {$ start $ end} # występuje zmienne rozszerzenie, następnie wynikowy ciąg jest oceniany: 123 456 789 10.
  • Syntaktyczne aspekty języka Basha

    Skrypty powłoki muszą być przechowywane w formacie tekstowym ASCII utworzonym za pomocą programu "editor", który nie wprowadza dodatkowych znaków ani sekwencji do formatowania tekstu. Na przykład edytory odpowiednie do tworzenia skryptów powłoki sąvi lub Emacs, dostępne w UNIX /Linux lub programy takie jak Notatnik, TextEdit i UltraEdit w systemie Microsoft Windows. Dobrą praktyką jest wstawianie w pierwszym wierszu każdego skryptu regularnego Bash, sekwencji "#! /Bin /bash ", który pokazuje absolutną ścieżkę programu w systemie plików komputera, na którym ma działać skrypt. W związku z tym można go uruchomić bezpośrednio w wierszu poleceń bez określania nazwy pliku jako argumentu polecenia "bash". Instrukcja programu tłumaczącego używanego przez system operacyjny do tłumaczenia i wykonywania instrukcji skryptowych jest podana w pierwszym wierszu samego skryptu, bezpośrednio po sekwencji znaków "#!". Uważa się, że wykonywany plik interpretera znajduje się w katalogu /bin, ale w różnych systemach może być zainstalowany w innych katalogach, na przykład:
  • /usr /bin, /usr /local /bin.
  • W ogólnym przypadku symbol "#" może być użyty do napisania komentarza w źródle skryptu. Dowolny znak w linii skryptu po znaku "#" jest ignorowany przez interpreter poleceń. W rzeczywistości często używa się go do wstawiania komentarzy do źródła skryptu w celu opisania jego działania lub wyjaśnienia wpływu konkretnych poleceń. Podobnie jak w przypadku wstawiania poleceń w trybie interaktywnym, nawet podczas kodowania skryptu, każda instrukcja programu może być zapisana w jednej linii lub podzielona na kilka linii, a kończy się na każdym wierszu, z wyjątkiem tego ostatniego, z symbolem "". Dodatkowe instrukcje można zgłaszać w tym samym wierszu za pomocą ";". Instrukcje programu mogą być "wcięte", aby kod źródłowy był czytany, ale powinieneś zwrócić na to uwagęwykorzystanie luk. Interpreter Bash «selektywny” niż innych ustnych lub kompilatorów, aw niektórych przypadkach nie wolno wkładać przypadkowych przestrzenie pomiędzy elementami, które składają się z instrukcją, w innych przypadkach, wykorzystanie przestrzeni jest niezbędna do prawidłowej interpretacji instrukcji. Nie ma znaków, aby oddzielić bloki instrukcji umieszczonych w strukturze zarządzania, na przykład, że należy powtórzyć w iteracyjny struktury sterowania. Z drugiej strony, istnieją odpowiednie słowa kluczowe, język, który może prawidłowo zidentyfikować początek i koniec bloku. Słowa te różnią się w zależności od instrukcji stosowanych w aplikacjach kontroli przepływu. W przykładach składni „mecz” wyrażenia regularne Bash niektóre znaki podjąć szczególne znaczenie, to znaczy, jeśli są one obecne w ciąg znaków jako argument polecenia, a następnie przeprowadzić precyzyjną funkcję.

    Uruchomienie interaktywne

    , z minimalnym uproszczone, że skorupy - program interakcję zawsze wykonuje tę samą operację. Spodziewa polecenia wejściowe jako wejście ocenić to, aby upewnić się, że polecenie jest poprawne składniowo i robi to, po czym powraca do oczekiwania na następną komendę. Proces kończy się, gdy powłoka otrzyma sygnał wskazujący, że wpis jest zakończona, a nie inne zespoły nie będą wysyłane do niego. W tym momencie program jest zakończony skorupę, uwalniając dedykowanej pamięci urządzenia i innych zasobów dostępnych w systemie operacyjnym. Uruchomiony skryptautomatycznie przez system operacyjny, gdy użytkownik wejdzie do samego systemu, to znaczy, może zostać wykonany przez użytkownika za pomocą polecenia określonego na już otwartej powłoce lub przy użyciu specjalnych narzędzi graficznych, jeśli działa z graficznym systemem interfejsu użytkownika. Na przykład można użyć powłoki poleceń na komputerze Apple Macintosh z systemem Mac OS X, uruchamiając narzędzie Terminal znajdujące się w Narzędziu w folderze Załączniki. Na pulpicie systemu Linux z graficznym menedżerem pulpitu, takim jak GNOME lub KDE, można otworzyć powłokę, wybierając aplikację Terminal z menu Programy - & gt; Akcesoria ». Po aktywowaniu powłoki poleceń można wyświetlić nazwę używanej przez nas powłoki, wykonując następujące polecenia:
  • $ echo;
  • $ SHELL /bin /bash.
  • Jeśli powłoka domyślnie nie jest Bash, można sprawdzić, czy jest w systemie w jednym z katalogów wymienionych w zmiennej środowiskowej PATH, używając polecenia «które», i wykonać go za pomocą polecenia «bash»:
  • $ echo $ SHELL /bin /tcsh $, które bash /bin /bash $ bash bash-203 $.
  • Powłoka działa interaktywnie w ten sposób daje wkład w każdym poleceniu i możliwości określonego w linii polecenia i wykonania samego polecenia. Dane wyjściowe są wyświetlane w tym samym oknie terminala. Każde polecenie przekazywane do powłoki kończy się wywołaniem klawisza Invio /Enter. Możesz zwolnić kilka poleceń w jednym wierszu, oddzielając je od siebie za pomocą znaku ";". Możliwe jest również podzielenie wstawienia polecenia na dwa lub więcej wierszy, kończąc na każdym pośrednimlinia z charakterem "".

    Koźlie, podwójne i tylne nogi

    Zazwyczaj w językach programowania cudzysłowy i podwójne cudzysłowy służą do ograniczania ciągów znaków, a użycie jednego lub drugiego znaku zależy od składni przyjętej w danym języku. W językach skryptowych użycie cudzysłowów i linków wstecznych ma inne znaczenie, a Bash nie jest w tym wyjątkiem. Pojedyncze cudzysłowy służą do ograniczania ciągów znaków. Interpreter nie jest częścią treści linii i po prostu używa sekwencji symboli oddzielonych cudzysłowami. Zatem znaki, które w przeciwnym razie przyjmują inną wartość, mogą również stanowić część linii. Jedynym znakiem, którego nie można użyć w cudzysłowie, są te same cytaty. Aby zdefiniować taką linię, konieczne jest ograniczenie jej za pomocą łap. Podwójne linie służą do ograniczania linii, ale jeśli ciąg jest ograniczony do tego znaku, interpreter wykonuje tak zwaną "interpolację" i dopuszcza wartość dowolnych zmiennych w wyrażeniach regularnych Basha w linii. W praktyce, jeśli ciąg zawarty w cudzysłowach zawiera odniesienie do zmiennej, to nazwa zmiennej w łańcuchu jest zastępowana jej wartością. Aby wydrukować znaki, takie jak podwójne cudzysłowy lub dolary, które w przeciwnym razie byłyby interpretowane i przyjmowały inną wartość, musisz przepisać przedrostek każdego z nich jako znak odwrotnego ukośnika odwrotnego. Aby wydrukować znak odwrotnego ukośnika z rzędu, ograniczony podwójnymi łapami, musisz odwrócić dwa odwrotne ukośniki. Charakter odwrotności jest najbardziej charakterystycznym zachowaniem,typowy dla języków skryptowych i nieobecny w głównych językach programowania na najwyższym poziomie. Cytaty pozwala odróżnić ciąg znaków, który jest interpretowany jako Bash polecenia i powinien być wykonywany, powracając jako wartości początkowych danych dla tego samego standardu wyjściowego kanału produkt.

    Przykłady poleceń

    Jeśli wykonać powłokę tak, że obsługuje sekwencję poleceń ASCII pokazany w pliku tekstowym:
  • $ pwd;
  • echo $ SHELL;
  • hostaname /home /marco /bin /bash aquilante $ echo & gt; $ SHELL /bin /bash
  • Jeśli trzeba przygotować plik o nazwie «script.sh», który jest przechowywany w treści domu pliku katalog może być następujący:
  • echo -n "Oggi e„il" 2 date +% d /% m /% y .
  • Wprowadzenie tego bardzo prostego skryptu, podając nazwę pliku w linii poleceń, które nazywa się skorupa:
  • $ bash script.sh Oggi è „Il 10/6/2011.
  • Powłoka może mieć również serię rozkazów do wykonania kanału, przez który przekierowuje sygnał wyjściowy do innego polecenia standardowe wejście Basha:
  • $ cat script.sh | bash oggi e 10/6/2011.
  • Możesz wybrać linię wyrażeń regularnych programu Bash z oznaczeniem "#!". Bezwzględna ścieżka powłoki mają być stosowane do skryptu, należy uruchomić bezpośrednio bez OS uruchomionego skryptu bash i przejścia wejściem:
  • $ cat script.sh #! /Bin /bash echo -n "Oggi e„il" date +% d /% m /% T $ chmod 755 script.sh $ ls -l script.sh -rwxr-XR x 1 użytkowników Marco 4918 Apr 23:58 script.sh $ ./script.sh Oggi E „il 10/6 /2011
  • W poprzednim przykładzie ostatnia komenda natychmiast wywołuje skrypt, który jest przechowywany w pliku „script.sh”, obecna w bieżącym katalogu określonym względną ścieżkę „./” do nazwy pliku.Musisz podać ścieżkę do katalogu, w którym znajduje się skrypt wykonywalny, ponieważ ze względów bezpieczeństwa bieżący katalog nie znajduje się na liście katalogów, w której powłoka powinna szukać zewnętrznych poleceń wykonywalnych. Lista takich katalogów jest przechowywana w regularnych wyrażeniach zmiennych Bash.

    Zalety systemu operacyjnego Bash

    Jest to najbardziej efektywny język skryptowy powłoki. Daje użytkownikowi łatwy sposób zautomatyzowania pracy, jeśli jest już zaznajomiony z aplikacją powłoki w trybie interaktywnym. Jeśli programista programuje system, musi wiedzieć, jak działa powłoka. Porównując skrypty ze studiami nad konfiguracją lub systemem automatyzacji "yaml" lub "json", są one znacznie bardziej wszechstronne. Skrypty Bash są prostsze, ponieważ skrypt działa domyślnie. Bash jest prostszym językiem i zmusza programistów do skupienia się na innych złożonościach systemu. Bash świetnie nadaje się do pisania skorup. Wszystko inne w zasadzie albo używa powłoki do poleceń, albo implementuje własną powłokę, kopiując dobre jej części. Ponadto istnieją dobre konstruktory wyrażeń regularnych Bash, które znacznie upraszczają pracę z powłoką. Dzięki Bash programiści mogą korzystać z interaktywnych doświadczeń internetowych przy użyciu wiersza poleceń Linuksa bez ograniczeń czasu i przestrzeni. Aby korzystać z tej funkcji, nie potrzebujesz trudnych reguł i wysiłku, a użytkownicy mogą uzyskać dostęp do zasobów i środowiska platformy Azure za pomocą jednego kliknięcia, nawet jeśli z nich korzystają.Azure, Azure Portal i Mobilne załączniki dokumentacji Azure Mobile. W przeciwieństwie do tradycyjnego środowiska wiersza poleceń, nie ma potrzeby instalowania i wybierania narzędzi przed rozpoczęciem pracy, a dzięki Bash można zaoszczędzić czas i wysiłek. Wszystkie narzędzia CLI, takie jak tekst, zestawienie, pojemniki i dane wyjściowe są dostępne w Bash i można używać bezpiecznych i łatwych narzędzi uwierzytelniania z interfejsem CLI 2.0. Sprawdziliśmy przykłady zwykłych wyrażeń Bash. Powodzenia w masteringu!

    Powiązane publikacje