Bash Scripting: Creation Guide

Skrypty skryptowe Bash są używane przez administratorów systemu, programistów, inżynierów sieci, pracowników akademickich i praktycznie każdego, kto regularnie korzysta z systemu Linux /Unix. Niezależnie od tego, co robi użytkownik i jakie jest jego ogólne opanowanie umiejętności obsługi komputera, może on znaleźć właściwy sposób korzystania ze skryptów Bash. Chociaż poprawnie, są one nazywane skryptami powłoki, ale większość programistów odwołuje się do ich skryptów Bash. Jako interaktywna powłoka jest krótkim językiem do inicjowania i zarządzania obliczeniami. Jako język skryptowy jest to język specyficzny dla domeny, do zarządzania i aranżowania procesów i plików.

Definicja skryptu Bash

Skrypty Bash - interpreter poleceń. Jest szeroko dostępny w różnych systemach operacyjnych i jest domyślnym parserem poleceń dla większości systemów GNU /Linux. To skrót "Bourne Again SHell".


Inne definicje:
  • Shell to makroprocesor, który umożliwia wykonywanie interaktywnych lub nieinteraktywnych poleceń.
  • Obsługa skryptów pozwala skonfigurować automatyczne wykonywanie poleceń, które w przeciwnym razie działałyby interakcyjnie jedna po drugiej.
  • Skrypty Bash są domyślne w wielu systemach GNU /Linux, więc skrypt powłoki działa nawet bez definiowania go jako interpretera. Aby dowiedzieć się, jakie jest domyślne polecenie, wpisz: $ echo $ SHELL /bin /bash. Istnieją inne interpretacje powłoki, takie jak Korn, C i wiele innych. Z tego powodu zaleca się określenieinterpreter powłoki, który będzie używany specjalnie do zawartości skryptu.


    Teraz wszystkie skrypty będą zawierały definicję interpretera powłoki: #! /Bin /bash. Dokładniej, jest to napisane w specjalnej literaturze dotyczącej skryptów do skryptów Advanced Bash.

    Nazwy plików i uprawnienia

    Aby wykonać skrypt powłoki, plik musi być wykonywalny, wykonywany przy użyciu polecenia "chmod + x FILENAME". Domyślnie wszystkie nowo utworzone pliki nie są wykonywane bez względu na sufiks rozszerzenia pliku. W rzeczywistości, najnowsza funkcja systemów GNU /Linux w zasadzie nie ma żadnego znaczenia. Podczas wykonywania polecenia "ls" dla listy wszystkich plików i katalogów, od razu wiadomo, że plik .sh jest wiarygodnym skryptem powłoki, a ".jpg" będzie skompresowanym obrazem. Więcej informacji na temat rozszerzeń plików w tym języku można znaleźć w przewodniku po skryptach Advanced Bash. W plikach GNU /Linux można użyć tego polecenia do zidentyfikowania typu pliku. Jak widać na przykładzie poniżej, rozszerzenie pliku nie ma znaczenia, a interpreter powłoki w tym przypadku jest ważniejszy.
    W związku z tym nazwa skryptu powłoki "0_xyz" działa dobrze, chociaż programiści starają się go unikać tak bardzo, jak to możliwe.

    Polecenie powłoki PATH

    Kiedy programista wprowadza polecenie w powłoce, Bash sprawdza pewne katalogi, aby dowiedzieć się, czy może je znaleźć. Dlatego, zgodnie z przewodnikiem po skryptach Bash, jeśli wpiszesz "ls" w powłoce, wykona on tylko polecenie, jeśli znajduje się na ścieżce. Operacja zakończy się z błędem, jeśli tak jestnie będzie w jednym z katalogów, które są częścią trasy. Jeśli jest zbieg okoliczności w więcej niż jednym katalogu na ścieżce, wybiera pierwszy. Możesz znaleźć trasę, uruchamiając:
    echo $ PATH. Na ekranie pojawia się coś takiego: /home /jzb /bin: /usr /local /bin: /usr /bin: /bin: /usr /bin /X11: /usr /X11R6 /bin: /usr /gry: /usr /lib /jvm /jre /bin.

    poprawny sposób katalogu głównej

    Każdy katalogu, a atakujących przedzielone okrężnicy. W tym przypadku, z których pierwszy będzie sprawdzana katalogowy «bin», następnie /usr /local /bin, /usr /bin. Jeśli użytkownik jest zalogowany jako administrator, należy go zobaczyć inny zestaw katalogów, w tym katalogu /usr /local /sbin /usr /sbin. Możesz dodać je w ruchu lub zmiany przez edycję pliku: ~ /.bashrc i ~ /.bash_profile. Na przykład: PATH = "$ HOME /bin: $ PATH". Możesz nieznacznie zmienić tę regułę i zainstalować zaawansowane skrypty Bash. PATH „=” zawiadomić Bash, to ustawić ścieżkę i «$ HOME /bin» zaprasza go dodać bin katalogu, a następnie «$ PATH» zachęca go do niczego się już na trasie. Parametr «:» jest ogranicznikiem między elementami. Deweloper zobaczy coś podobnego do tego na ekranie swojego monitora: if [-d "$ HOME /bin"]; następnie PATH = "$ HOME /bin: $ PATH" fi. Zasada ta sprawdza, czy katalog istnieje «» bin w katalogu domowym, a następnie dodać go do ścieżki do bardziej prawidłowo wykonać operację «Uruchom skrypt Bash».

    alias String

    Alias ​​- linia, która atakujących zostanie zastąpiony przez inny zespół. Prosty przykład: alias ls = 'ls --color = auto'. Mówi mu, że podczas inauguracji «ls», należy uruchomić «ls --color = auto», bez wybierania resztę. Możesz ustawić aliasy w wierszu poleceń i jest to dobre do testowania.
    Ma to sensustaw aliasy na "~ /.bash_profile i ~ /.bashrc". Lub stwórz coś takiego jak "~ /.aliases" i wywołaj go z plików konfiguracyjnych w następujący sposób: if [-f ~ /.bash_aliases]; następnie ~ /.bash_aliases fi Aby zobaczyć już istniejące aliasy, po prostu uruchom je w powłoce. Jest to domyślnie wskazane w dystrybucji. Na przykład domyślną konfiguracją jest openSUSE 11.2 bez żadnych zmian.
    Jako test możesz zobaczyć, że jest on już zainstalowany w dystrybucji i spróbować zrobić kilka własnych opcji.

    Rozszerzenie powłoki

    Zanim Bash wykona polecenie, ocenia, w razie potrzeby, "enter" i "rozwija" aliasy i inne wyrażenia. Ma kilka znaków, które koniecznie rozciąga się, aby dopasować jeden lub więcej znaków, i są one nazywane "symbolem generalizacji". Takie porównanie modeli może być naprawdę przydatne. Na przykład, jeśli chcesz zobaczyć wszystkie pliki JPEG w katalogu, uruchom «ls * .jpg», pod warunkiem, że pliki JPEG oznaczone jako «jpg», a atakujących rozszerzy ją dopasować dowolną nazwę, która kończy jpg.

    Jeśli potrzebujesz tylko połączyć 1 znak, użyj "?". To wskaże jeden znak, więc "ls"? .Jpg "dopasuje tylko nazwy plików, takie jak" 1.jpg "lub" a.jpg ", a nie" 01.jpg ". Bash pozwala również dopasować zakresy znaków za pomocą nawiasów. Użycie [abc12] dopasuje jedną ze znaków w rozszerzeniu. W ten sposób, pracując «ls -lh [abc12] .jpg», będzie odnosić się do a.jpg, b.jpg, c.jpg, 1.jpg 2.jpg, ale i 12.JPG lub abc.jpg. Możesz usunąć szablon za pomocą prefiksu "bang" (!), Na przykład: ls-lh [! Ab12] .jpgdopasuje c.jpg lub 3.jpg, ale nie 2.jpg, itp. Inną wygodną sztuczką jest rozszerzenie ramek, jeśli chodzi o porządkowanie dokumentów według lat i dat. Jeśli na przykład katalog ~ /Documents ma katalog 2010 z podkatalogami od 01 do 12 i nie musi drukować od 01 do 12, zamiast tego należy wprowadzić Bash: mkdir 2010 /{0112}. Kiedy odczytuje regułę, rozszerza to, co jest w nawiasach od 01 do 12. Działa również z literami, więc jeśli potrzebujesz podkatalogów przez z, możesz uruchomić mkdir {az} i on utworzy katalogi poprzez z. Może również pracować z wielkimi literami.

    Wykonanie skryptu

    Istnieje alternatywny sposób uruchamiania skryptów Bash. W bardzo uproszczonej prezentacji jego skrypt to nic innego jak plik tekstowy zawierający instrukcje, które muszą być wykonywane sekwencyjnie od góry do dołu. Sposób interpretacji instrukcji zależy od konkretnego programu lub sposobu wykonywania skryptu.
    Inną metodą implementacji skryptów jest jawne wywołanie jej interpretera, na przykład $ bash date.sh. W związku z tym skrypt będzie działał bez konieczności uruchamiania skryptu powłoki i bez ogłaszania shebang, bezpośrednio w schemacie systemu operacyjnego, wywoływanie wykonywanego pliku bash binarnego. W ten sposób zawartość pliku date.sh zostanie załadowana i zinterpretowana jako Skrypt powłoki Bash.

    Ścieżka względna i bezwzględna

    Zanim będzie można zaprogramować oficjalny skrypt powłoki, taki jak skrypt Bash wyjścia, należy zdefiniować nawigację i ustawić różnicę między ścieżką względną i bezwzględną do pliku. Prawdopodobnie najlepszą analogią wyjaśniającą względną i bezwzględną ścieżkę do pliku jestwizualizuj system plików GNU /Linux jako budynek wielopiętrowy. Katalog główny to brama wejściowa do budynku oznaczona pozycją, zapewniająca wejście do całego systemu plików "struktury", a więc daje dostęp do wszystkich katalogów - "pięter" i "pokojów" - oraz plików - do "mieszkańców". Na przykład, aby przejść do pokoju 1 na 3 piętrze, najpierw musisz wejść do głównych drzwi, a następnie przejść na 3 piętro (poziom 3), a następnie wejść do pokoju (pokój1). Tak więc, absolutna ścieżka do tego konkretnego pokoju na podłodze wewnątrz budynku "/level3 /room1". Dlatego jeśli chcesz odwiedzić room2 również na poziomie 3, najpierw zlokalizuj bieżącą lokalizację, czyli pokój 1, wpisując "/", a następnie włączając nazwę pokoju "room2". To przenosi względną ścieżkę do pokoju 2, który w tym przypadku to "/room2". Ponieważ w tym przykładzie użytkownik znajduje się już na trzecim poziomie, nie musi opuszczać całego budynku i ponownie przechodzić absolutnej ścieżki przez główne wejście /level3 /room2. Na szczęście GNU /Linux ma proste narzędzie kompasu, które pomaga programistom poruszać się po systemie plików jako polecenie "pwd". To polecenie zawsze wydrukuje bieżące położenie, gdy zostanie wykonane. Poniższy przykład użyje poleceń "cd" i "pwd" do nawigacji w systemie plików GNU /Linux przy użyciu bezwzględnych i względnych ścieżek.
    Dalsza ciągłość.
    Wykonaj polecenie "cd" bez żadnych argumentów, aby natychmiast przejść z katalogu domowego użytkownika z dowolnego miejsca. Jak widać, poruszanie się po systemie plików GNU /Linux jest zarówno proste, jak i bardzo mylącetemat

    Pojęcia zmiennych

    Prawie każdy język programowania ma pojęcie zmiennych - symboliczną nazwę części pamięci, której można przypisać wartości, odczytywać i manipulować jej zawartością. Na przykład dla przykładu skryptu Bash, Hello World można zrobić za pomocą zmiennych. Zauważ, że nie powinno być żadnych spacji wokół znaku "=":
  • VAR = wartość działa;
  • Wartość VAR = nie działa.
  • W pierwszym przypadku powłoka widzi symbol "=" i obsługuje polecenie jako przypisanie zmiennej. W drugim przypadku powłoka zakłada, że ​​VAR musi być nazwą polecenia i próbuje go wykonać. Wpisz następujący kod w pliku var.sh.
    Przypisuje to zmiennej "Hello World" do zmiennej MY_MESSAGE. Wymaga to cytatów wokół łańcucha Hello World, a zmienna może zawierać tylko 1 wartość, więc linia ze spacjami powinna być wyświetlana tak, aby powłoka wiedziała, że ​​wszystko jest traktowane jako jedna. W przeciwnym razie powłoka spróbuje wykonać polecenie "Świat" po przypisaniu "MY_MESSAGE = Hello". Powłoka nie wymaga od typów zmiennych, może przechowywać łańcuchy, liczby całkowite, poprawne liczby - wszystko, co lubi użytkownik. Doświadczeni programiści zwracają uwagę, że znaki specjalne muszą być odpowiednio ekranowane. Odbywa się to za pomocą wbudowanego w powłokę polecenia read, które odczytuje ciąg ze standardowego wejścia do dostarczonej zmiennej. Jeśli podasz mu pełne imię i nie użyje podwójnych cudzysłowów polecenia "echo", to nadal będzie wyświetlane poprawnie. Większość języków ma pojęcie pętli, jeśli trzeba powtórzyć zadanie dwadzieścia razy, jest mało prawdopodobne, że użytkownik chce wprowadzić kod 20 razy i prawdopodobniez błędami W tym celu istnieją pętle "for" i "while" w powłoce Bourne'a. To sprawia, że ​​nieco mniejsze szanse niż inne języki, ale nikt nie twierdzi, że programowanie powłoka ma moc C. Na cykl powtarza się przez zbiór wartości, o ile lista została wyczerpana, GHB „wartości NJV może być dowolna.

    Pierwszy scenariusz

    W przypadku pierwszego skryptu powłoki wystarczy napisać skrypt z napisem "Hello World". Utwórz plik (first.sh) w następujący sposób: first.sh Pierwsza linia mówi UNIX plik należy uruchomić /bin /sh. Jest to standardowy układ powłoki dla prawie każdego systemu uniksowego. Jeśli używasz systemu Linux Bash skrypt, potem GNU /Linux /bin /sh, zazwyczaj dowiązanie symboliczne do bash lub niedawno został zastosowany kreskę. Druga linia zaczyna się specjalnym znakiem "#". Oznacza linię jako komentarz, jest całkowicie ignorowany przez powłokę. Jedynym wyjątkiem jest sytuacja, gdy zaczyna się pierwszy wiersz pliku "#!". Jest to specjalna dyrektywa, która uważa, zwłaszcza Unix i oznacza, że ​​nawet w przypadku korzystania «csh», «ksh» lub coś jako interaktywna powłoka, dalsze interpretowane Bourne. Podobnie, Perl można uruchomić wiersz: #! /Usr /bin /perl Ta interaktywna powłoka informuje, że następujące polecenie powinno uruchomić Perl. Do programowania powłoki Bourne'a są często używane: #! /Bin /sh. Trzecia linia wykonuje polecenie echo «» z dwoma parametrami lub argumenty: pierwszy - „Hello”; Drugi to "Świat". Zwróć uwagę, że "echo" automatycznie ustawi jedną spację między jej parametrami. Symbol nadal odnotowuje # komentarz i wszystkoponiższe są ignorowane przez powłokę.

    Test na scenariusz testowy

    ​​Test jest używany praktycznie dla każdego pisemnego skryptu powłoki. Ten „test” nie nazywa się tak bezpośrednio, często przy użyciu notacji „[”. javljaetsja Online symvolycheskoy odnosząc эtoho słowa Avto Set Program shell ponad chytaemыmy.Obыchno Ten oznachaet, coś bardzo shell skrypt powłoki Bash będzie ynterpretyrovatsya "[" Jak co oznacza "test", nawet jeśli środa Unix nastroena inaczej. Ten oznachaet że «[” tak naprawdę to program, jaki "ls" i inni Dlatego IIa dolzhna bыt otoczone spacjami: if [$ foo = "bar"] nie będzie działać, ponieważ jest on interpretowany jako: if test $ foo = "bar"], która jest "]" bez początku "[" .W ten sluchae pomeschayut probelы Około vseh operatorów i vыdelyayut obyazatelnыe słowo "przestrzeń", zamenyaya ego faktycheskoe prostranstva, w przeciwnym razie nie jest zemsta, to nie srabotaet: jeśli przestrzeń [SPACE "$ foo" SPACE SPACE = "bar" SPACE] Niektórzy akceptują membranę "==" do porównywania ciągów znaków. W przypadku tych ostatnich najlepiej używać pojedynczego "" lub "-eq" dla liczb całkowitych. Jak widać, test jest prostym, ale potężnym narzędziem do porównywania, które jest wymagane do działania powłoki. Oczywiście, nie wszystko będzie późno guru-Bash przeczytaniu tego artykułu, ale będzie bardziej pewny siebie i uzbrojone w niezbędną wiedzę i umiejętności, aby łatwo wykonać swoją pracę.

    Powiązane publikacje