Przewodnik dla początkujących na temat tworzenia skryptów Shell Podstawy
Termin "skrypty powłoki" często pojawia się na forach Linux, ale wielu użytkowników go nie zna. Nauka tej prostej i potężnej metody programowania może pomóc Ci zaoszczędzić czas, lepiej nauczyć się wiersza poleceń i wyeliminować żmudne zadania zarządzania plikami.
Co to jest Skrypty Shell??
Bycie użytkownikiem systemu Linux oznacza, że grasz przy użyciu wiersza poleceń. Czy ci się to podoba, czy nie, są tylko niektóre rzeczy, które są znacznie łatwiejsze dzięki temu interfejsowi niż przez wskazywanie i klikanie. Im więcej używasz i uczysz się wiersza poleceń, tym bardziej widzisz jego potencjał. Cóż, sama linia poleceń to program: powłoka. Większość dystrybucji Linuksa dziś używa Basha i właśnie do tego naprawdę wprowadzasz komendy.
Niektórzy z was, którzy używali systemu Windows przed korzystaniem z systemu Linux, mogą pamiętać pliki wsadowe. Były to małe pliki tekstowe, które można było wypełnić poleceniami do wykonania, a system Windows uruchamiał je po kolei. Był to sprytny i zgrabny sposób na zrobienie pewnych rzeczy, na przykład uruchamianie gier w licealnym laboratorium komputerowym, gdy nie można było otworzyć folderów systemowych lub utworzyć skrótów. Pliki wsadowe w systemie Windows, choć przydatne, są tanią imitacją skryptów powłoki.
Skrypty powłoki pozwalają nam na programowanie poleceń w łańcuchach i sprawiają, że system wykonuje je jako wydarzenie skryptowe, podobnie jak pliki wsadowe. Pozwalają również na znacznie bardziej użyteczne funkcje, takie jak zastępowanie poleceń. Możesz wywołać polecenie, takie jak data, i użyć jego danych wyjściowych jako części schematu nazywania plików. Możesz zautomatyzować kopie zapasowe, a każdy skopiowany plik może mieć bieżącą datę dołączoną na końcu nazwy. Skrypty to nie tylko wywołania poleceń. Są to programy same w sobie. Skrypty umożliwiają korzystanie z funkcji programowania - takich jak pętle "dla", instrukcje / / i inne - bezpośrednio w interfejsie systemu operacyjnego. I nie musisz uczyć się innego języka, ponieważ używasz tego, co już znasz: wiersza poleceń.
Myślę, że to naprawdę jest moc skryptów. Możesz programować za pomocą poleceń, które już znasz, ucząc się zszywek większości głównych języków programowania. Potrzebujesz zrobić coś powtarzalnego i nużącego? Skryptuj to! Potrzebujesz skrótu do naprawdę skomplikowanego polecenia? Skryptuj to! Chcesz zbudować naprawdę łatwy w użyciu interfejs wiersza poleceń? Skryptuj to!
Zanim zaczniesz
Zanim zaczniemy naszą serię skryptów, omówmy kilka podstawowych informacji. Będziemy używać powłoki bash, której większość dystrybucji Linuksa używa natywnie. Bash jest dostępny dla użytkowników Mac OS i Cygwin w Windows. Ponieważ jest tak uniwersalny, powinieneś być w stanie pisać niezależnie od platformy. Ponadto, dopóki istnieją wszystkie polecenia, do których istnieje odwołanie, skrypty mogą działać na wielu platformach z niewielkim lub żadnym wymaganym dopasowaniem.
Skrypty mogą z łatwością korzystać z uprawnień administratora lub superużytkownika, dlatego najlepiej przetestować skrypty przed ich uruchomieniem. Używaj też zdrowego rozsądku, na przykład upewniając się, że masz kopie zapasowe plików, na których chcesz uruchomić skrypt. Bardzo ważne jest również użycie właściwych opcji, takich jak -i dla polecenia rm, aby interakcja była wymagana. To może zapobiec nieprzyjemnym błędom. Jako takie, czytaj skrypty, które pobierasz i bądź ostrożny z posiadanymi danymi, na wypadek, gdyby coś poszło nie tak.
Zasadniczo skrypty to zwykłe pliki tekstowe. Możesz użyć dowolnego edytora tekstów, aby je zapisać: gedit, emacs, vim, nano ... Ta lista jest długa. Po prostu zapisz go jako zwykły tekst, a nie jako tekst sformatowany lub dokument Word. Ponieważ uwielbiam łatwość użytkowania, którą zapewnia nano, będę z tego korzystać.
Uprawnienia i nazwy skryptów
Skrypty są wykonywane jak programy, a aby tak się stało, muszą mieć odpowiednie uprawnienia. Można wykonać skrypty wykonywalne, uruchamiając na nim następujące polecenie:
chmod + x ~ / somecrazyfolder / script1
To pozwoli każdemu uruchomić ten konkretny skrypt. Jeśli chcesz ograniczyć jego użycie tylko do użytkownika, możesz użyć tego:
chmod u + x ~ / somecrazyfolder / script1
Aby uruchomić ten skrypt, musisz przejść do właściwego katalogu, a następnie uruchomić skrypt w następujący sposób:
cd ~ / somecrazyfolder
./ script1
Aby wszystko było wygodniejsze, możesz umieścić skrypty w folderze "bin" w swoim katalogu domowym:
~ / bin
W wielu nowoczesnych dystrybucjach ten folder nie jest już domyślnie tworzony, ale można go utworzyć. Zazwyczaj jest to miejsce przechowywania plików wykonywalnych, które należą do użytkownika, a nie do innych użytkowników. Umieszczając tutaj skrypty, możesz po prostu uruchamiać je, wpisując ich nazwę, podobnie jak inne polecenia, zamiast dyskutować i używać prefiksu "./".
Zanim jednak nazwiesz skrypt, powinieneś wykonać następujące polecenie, aby sprawdzić, czy masz zainstalowany program używający tej nazwy:
który [polecenie]
Wiele osób nazywa swoje wczesne skrypty "testem", a kiedy próbują uruchomić go w linii poleceń, nic się nie dzieje. Dzieje się tak, ponieważ powoduje konflikt z poleceniem testowym, które nie robi nic bez argumentów. Zawsze upewnij się, że twoje nazwy skryptów nie kolidują z poleceniami, w przeciwnym razie możesz robić rzeczy, których nie zamierzasz robić!
Wskazówki dotyczące skryptów
Jak wspomniałem wcześniej, każdy plik skryptu jest w zasadzie zwykłym tekstem. To nie znaczy, że możesz napisać to, co chcesz, wszyscy chcąc nie chcąc. Kiedy próbuje się wykonać plik tekstowy, powłoki będą analizować je pod kątem wskazówek, czy są to skrypty, czy nie i jak poprawnie obsłużyć wszystko. Z tego powodu istnieje kilka wskazówek, które musisz znać.
- Każdy skrypt powinien być z "#! / Bin / bash"
- Każda nowa linia jest nowym poleceniem
- Linie komentarza zaczynają się od #
- Polecenia są otoczone ()
Hash-Bang Hack
Gdy powłoka analizuje plik tekstowy, najbardziej bezpośrednim sposobem identyfikacji pliku jako skryptu jest utworzenie pierwszej linii:
#! / bin / bash
Jeśli używasz innej powłoki, zastąp jej ścieżkę tutaj. Linie komentarza zaczynają się od skrótów (#), ale dodanie hitu (!) I ścieżki powłoki po tym, jak jest to hack, który ominie tę regułę komentarza i zmusi skrypt do wykonania z powłoką, którą ta linia wskazuje.
Nowa linia = nowe polecenie
Każda nowa linia powinna być traktowana jako nowa komenda lub element większego systemu. Na przykład instrukcje / / else przejmą wiele linii, ale każdy składnik tego systemu znajduje się w nowej linii. Nie pozwól, aby polecenie przenikało do następnego wiersza, ponieważ może to spowodować obcięcie poprzedniego polecenia i błąd w następnym wierszu. Jeśli twój edytor tekstu to robi, powinieneś wyłączyć opcję zawijania tekstu, aby była bezpieczna. Możesz wyłączyć zawijanie tekstu w nano-bitowym uderzeniu ALT + L.
Komentarz Często z #s
Jeśli zaczniesz linię z #, linia zostanie zignorowana. Spowoduje to przekształcenie go w wiersz komentarza, w którym możesz przypomnieć sobie, co było wynikiem poprzedniego polecenia lub co zrobi następne polecenie. Ponownie wyłącz zawijanie tekstu lub podziel komentarz na wiele linii, które zaczynają się od haszu. Używanie wielu komentarzy jest dobrą praktyką do zachowania, ponieważ pozwala tobie i innym osobom na łatwiejsze podkręcanie skryptów. Jedynym wyjątkiem jest wyżej wymieniony hak Hash-Bang, więc nie używaj opcji #s with! S. ;-)
Polecenia są otoczone nawiasami
W starszych czasach podstawienia komend dokonywane były za pomocą pojedynczych znaczników (", dzieli klawisz ~). Nie będziemy tego jeszcze dotykali, ale ponieważ większość ludzi wyrusza na poszukiwanie podstaw, dobrym pomysłem jest nadmienić, że zamiast tego powinieneś użyć nawiasów. Dzieje się tak głównie dlatego, że podczas zagnieżdżania - wstawiania poleceń do innych poleceń - nawiasy działają lepiej.
Twój pierwszy skrypt
Zacznijmy od prostego skryptu, który pozwala kopiować pliki i dołączać daty na końcu nazwy pliku. Nazwijmy to "datecp". Najpierw sprawdźmy, czy ta nazwa jest w konflikcie z czymś:
Możesz zobaczyć, że nie ma wyjścia z którego polecenia, więc jesteśmy gotowi użyć tej nazwy.
Stwórzmy pusty plik w folderze ~ / bin:
touch ~ / bin / datecp
A teraz zmieńmy pozwolenie, zanim zapomnimy:
Zacznijmy więc budować nasz skrypt. Otwórz ten plik w wybranym edytorze tekstu. Tak jak powiedziałem, lubię prostotę nano.
nano ~ / bin / datecp
I, chodźmy naprzód i wprowadź warunek wstępny pierwszej linii oraz komentarz na temat tego, co robi ten skrypt.
Następnie zadeklaruj zmienną. Jeśli kiedykolwiek brałeś algebrę, prawdopodobnie wiesz, co to jest. Zmienna pozwala nam przechowywać informacje i robić z nim różne rzeczy. Zmienne mogą "rozszerzać się", gdy są przywoływane gdzie indziej. Oznacza to, że zamiast wyświetlać swoją nazwę, będą wyświetlać swoją przechowywaną zawartość. Możesz później powiedzieć tę samą zmienną, aby przechowywać różne informacje, a wszelkie instrukcje, które nastąpią po niej, wykorzystają nowe informacje. To naprawdę ciekawy symbol zastępczy.
Co zmienimy? Cóż, przechowujmy datę i godzinę! Aby to zrobić, zadzwonimy do komendy date.
Spójrz na zrzut ekranu poniżej, aby dowiedzieć się, jak zbudować wyjście polecenia date:
Możesz to zobaczyć, dodając różne zmienne zaczynające się od%, możesz zmienić wyjście polecenia na to, co chcesz. Aby uzyskać więcej informacji, możesz zajrzeć na stronę podręcznika dla polecenia daty.
Użyjmy ostatniej iteracji polecenia date, "date +% m_% d_% y-% H.% M.% S", i użyj tego w naszym skrypcie.
Gdybyśmy teraz zapisali ten skrypt, moglibyśmy go uruchomić i dałoby nam dane wyjściowe polecenia date, jak można się było spodziewać:
Ale, zróbmy coś innego. Podajmy nazwę zmiennej, np. Date_formatted do tego polecenia. Właściwa składnia tego jest następująca:
variable = $ (argumenty opcji poleceń)
I dla nas zbudowaliśmy to tak:
date_formatted = $ (data +% m_% d_% y-% H.% M.% S)
To właśnie nazywamy podstawieniem poleceń. Zasadniczo mówimy bashowi, że gdy pojawi się zmienna "date_formatted", uruchom polecenie wewnątrz nawiasów. Następnie, niezależnie od tego, jakie dane wyjściowe wyda komenda, powinno zostać wyświetlone zamiast nazwy zmiennej "date_formatted".
Oto przykładowy skrypt i jego wynik:
Zwróć uwagę, że na wyjściu znajdują się dwie spacje. Zostanie wyświetlona spacja w cudzysłowie komendy echo i spacja przed zmienną. Nie używaj spacji, jeśli nie chcesz, aby się pojawiły. Zauważ też, że bez tej dodanej linii "echo" skrypt nie dałby absolutnie żadnego wyniku.
Wróćmy do naszego skryptu. Dodajmy następnie część kopiującą polecenia.
cp -iv $ 1 $ 2. $ data_formatted
Spowoduje to wywołanie polecenia kopiowania z opcjami -i i -v. Pierwszy z nich poprosi o weryfikację przed nadpisaniem pliku, a drugi wyświetli, co jest niedziałające w wierszu poleceń.
Następnie widzisz, że dodałem opcję "$ 1". Podczas wykonywania skryptów znak dolara ($), po którym następuje liczba, będzie oznaczać numerowany argument skryptu podczas jego wywoływania. Na przykład w następującym poleceniu:
cp -iv Trogdor2.mp3 dzwonek.mp3
Pierwszy argument to "Trogdor2.mp3", a drugim argumentem jest "ringtone.mp3".
Patrząc wstecz na nasz skrypt, widzimy, że odwołujemy się do dwóch argumentów:
Oznacza to, że po uruchomieniu skryptu będziemy musieli podać dwa argumenty, aby skrypt działał poprawnie. Pierwszy argument, 1 $, to plik, który zostanie skopiowany i zostanie podstawiony jako pierwszy argument polecenia "cp -iv".
Drugi argument, 2 $, będzie działał jako plik wyjściowy dla tego samego polecenia. Ale możesz też zobaczyć, że jest inaczej. Dodaliśmy okres i odnosimy się do zmiennej "date_formatted" od góry. Ciekawy, co to robi?
Oto, co dzieje się po uruchomieniu skryptu:
Możesz zobaczyć, że plik wyjściowy jest wymieniony jako cokolwiek wprowadziłem za 2 $, po którym następuje kropka, a następnie wynik polecenia date! Ma sens, prawda?
Teraz, gdy uruchomię polecenie datecp, uruchomi on ten skrypt i pozwoli mi skopiować dowolny plik do nowej lokalizacji i automatycznie doda datę i godzinę do końca nazwy pliku. Przydatny do archiwizacji!
Skrypty powłoki są podstawą do działania Twojego systemu operacyjnego. Nie musisz uczyć się nowego języka programowania, aby to się stało. Wypróbuj skrypty z niektórymi podstawowymi poleceniami w domu i zacznij myśleć o tym, do czego możesz tego użyć.
Czy piszesz? Czy masz jakąś radę dla początkujących? Podziel się swoimi przemyśleniami w komentarzach! W tej serii jest jeszcze więcej!