Niniejszym tekstem otwieram cykl wpisów poświęconych podstawom tworzenia skryptów bash. Ten dzisiejszy praktycznie w całości będzie poświęcony kwestiom związanym z wymaganiami wstępnymi, by zacząć swoją przygodę z wierszem poleceń. Jednocześnie odpuszczę sobie cały “marketingowy” bełkot traktujący o tym, dlaczemu to warto zaznajomić się z tym zagadnieniem. Wychodzę bowiem z założenia, że skoro to czytasz drogi czytelniku to najprawdopodobniej taką potrzebę odczuwasz i to chyba najlepsza rekomendacji dla dalszej lektury.
Wymaganie pierwsze: uzyskaj dostęp do wiersza poleceń Linuksa
Pierwsze co musisz posiadać (oprócz samych chęci i odrobiny zapału), aby zacząć przygodę ze skryptowaniem w powłoce Linuksa, to dostęp do tej ostatniej. W mojej opinii najwygodniejszym i najbardziej kształcącym rozwiązaniem jest posiadanie maszyny, na której taki system operacyjny jest zainstalowany, chociażby obok Okienek. Tym niemniej są inne sposoby interakcji z powłoką Linuksa. Można oczywiście skorzystać z jednego z wielu placów zabaw (z angielska “playground”, co może pomóc w googlowaniu) dostępnych w sieci, choć osobiście nie polecam. Jeśli jednak nie chcemy lub nie możemy zainstalować Pingwina na własnym sprzęcie, zdecydowanie lepiej w mojej opinii jest posłużyć się (podaję rozwiązania od najmniej do tego najbardziej praktycznego) Cygwinem, WSL-em (Windows Subsystem for Linux) albo postawić Linuksa na jakiejś wirtualce.
Jeśli wymienione wyżej narzędzia drogi czytelniku nic Ci nie mówią, to zapraszam do lektury internetów, ponieważ w tym wprowadzeniu czy szerzej całym quasi kursie nie będę im poświęcał w ogóle miejsca. Wychodzę bowiem z założenia, że jeśli samodzielne zainstalowanie na komputerze chociażby VirtualBoxa, a następnie postawienie na nim jakiejkolwiek linuksowej dystrybucji, przerasta Twoje możliwości, a przynajmniej oczekujesz prowadzenia za rękę również w tym zakresie, to ten kurs czy w ogóle zabawa bashem nie jest dla Ciebie.
Otóż pisanie użytecznych skryptów powłoki Linuksa nie sprowadza się wcale do opanowania takich zagadnień jak zmienne czy też sterowaniem przepływem (tj. instrukcje warunkowe oraz pętle), ponieważ są to dość proste zagadnienia nawet dla osoby, która nie posiada doświadczenia w programowaniu, ale za to ma otwarty umysł i trochę zapału. Co więcej nie będzie ani krzty przesady, jeśli napiszę, że można tworzyć naprawdę użyteczne skrypty bash bez zastosowania któregokolwiek ze wspomnianych przed momentem elementów koderskiego rzemiosła, choć nierzadko może to być niespecjalnie optymalne, o ile w ogóle możliwe. Bardziej chodzi mi w tym miejscu o zasygnalizowanie faktu, że korzystanie z różnych struktur programistycznych przy tworzeniu skryptów bash jest tak naprawdę wtórne wobec dobrego opanowania podstaw systemu Linux. Właśnie z tego też powodu sugerowałem wcześniej, iż przystępując do nauki w tym zakresie najlepiej korzystać z pełnoprawnej dystrybucji Linuksa, choćby miała być na wirtualce posadowiona.
Rzecz jasna korzystania z Linuksa czy z samego wiersza poleceń, to bardzo rozległe zagadnienie, zdecydowanie wykraczające poza ambicje tej serii wpisów. Oczywiście jak zawsze zakładam, że odbiorcą moich tekstów są osoby, które określam mianem “hobbystów”, czyli ludzie z niewielkim – o ile jakimkolwiek – doświadczeniem w danej dziedzinie, a już na pewno nie będące zawodowymi programistami. Tych ostatnich od razu przepraszam za pewne uproszczenia, choć w sumie takie osoby tutaj nie zaglądają. Dlatego też będę starał się omawiać – przynajmniej pobieżnie – każde polecenie czy program, który zostanie wykorzystany w prezentowanym skrypcie czy przykładzie. Tym niemniej gorąco zachęcam do samodzielnego dokształcania się w tym zakresie, zwłaszcza że materiałów w sieci nie brakuje. Z książek wydanych po naszemu, które miałem okazję co najmniej przekartkować, polecam “Jak działa Linux” autorstwa Briana Warda, zwłaszcza że ostatnio pojawiło się na naszym rynku wydawniczym trzecie, a tym samym uaktualnione wydanie. Osobiście korzystałem z wydanie wcześniejszego i mogę zapewnić, że ono też w zupełności się nada. Druga pozycja – nie wiem czy od niej tak naprawdę nie powinienem zacząć – to “Wprowadzenie do wiersza poleceń”, którą napisał swego czasu William Shotts. Obie z nich zawierają też obszerne fragmenty poświęcone skryptowaniu, przy czym druga z wymienionych przeze mnie robi to chyba przystępniej oraz nieco szerzej, a przy tym jest to robione na bazie genialnego projektu realizowanego krok po kroku.
Wymaganie drugie: uzbrój się w porządny edytora tekstu
Nie wiem czy w tym przypadku słowo “wymaganie” jest na miejscu, ponieważ to raczej luźna sugestia, zwłaszcza że nic nie stoi na przeszkodzie, by pisać skrypty chociażby w Notatniku. Tym niemniej taki ascetyzm obecnie nie ma za wiele praktycznego sensu, zwłaszcza że większość z takich programów jest zazwyczaj darmowa, dlatego wybór konkretnego narzędzia ma już drugorzędne znaczenie, ponieważ chyba każdy z popularnych edytorów wspiera skryptowanie w bashu, czyli kolorowanie czy podpowiadanie składni (ewentualnie czasem trzeba doinstalować jakieś rozszerzenie).
Ja z czystym sercem mogę polecić te, z których sam korzystam, czyli Visual Studio Code oraz w mniejszym stopniu Notepad++. Na tym ostatnim zdarza mi się pracować – z różnych powodów – na firmowym komputerze, ale niestety jednym z jego minusów jest fakt, że jest on dostępny – o ile mi wiadomo – tylko w wersji dla Windows (choć chyba są jakieś pingwinkowe “podróbki”). Natomiast radę dają nawet takie dość proste rozwiązania jak chociażby gedit, który jest domyślnie instalowany w wielu dystrybucjach Liniksa.
Od razu też uprzedzam, że w “prawdziwym życiu” możemy być skazani na terminalowe edytory, jeśli pracujemy na maszynie pozbawionej graficznego środowiska (choć nawet wówczas można to – zazwyczaj – dość prosto obejść). Więc warto się z nimi nieco później zapoznać. Takie edytory są jednak zdecydowanie mniej “juzer frendli”, choć są i tacy, którzy skryptują wyłącznie w Vi bez względu na okoliczności. Ja jednak na początek odradzałby to ostatnie narzędzie, ponieważ może się okazać, że tyle samo czasu zajmie nam jego opanowanie, co samych podstaw pisania skryptów.
Dlatego na początek zdecydowanie prościej skorzystać z nano lub MCEdit, choć ten ostatni nierzadko wymaga dopiero zainstalowania, ponieważ nie jest to element zestawu obowiązkowego w wielu dystrybucjach.
Na sam koniec
Jak widać przedstawione wymagania nie są specjalnie wyśrubowane. Z resztą jak zawsze najważniejsze w takim przypadku są chęć i gotowość do nauki. Oczywiście nie obędzie się też bez dostępu do wiersza poleceń Linuksa, natomiast posiadania wyszukanego edytora tekstowego to już opcja, do której jednak gorąco zachęcam. W kolejnym wpisie przejdziemy wspólnie do konkretów, czyli omówię ogólną strukturę skryptu, kroki konieczne do jego uruchomienia i napiszemy pierwszy skrypt.
Dodam jeszcze na sam koniec, że może się zdarzyć, iż uznam za koniecznie uzupełnienie wcześniejszych tekstów o coś, co pierwotnie zostało przeze mnie pominięte. Tym sposobem osoby realizujące na bieżąco ten – pożal się Boże – kurs w jakiś sposób będą podwójnie poszkodowane. Z jednej strony będą skazani na kaprys autora (czytaj: brak regularności kolejnych wpisów), a z drugiej finalny materiał może się nieco różnić od tego na starcie. O ile w kwestii regularności niewiele da się zrobić (nie wszystko tak do końca zależy ode mnie), to spróbuję wymyślić jakieś obejście tego drugiego problemu.