23Aug

Przewodnik dla początkujących w Skrypty 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 wydajnej metody programowania może pomóc Ci zaoszczędzić czas, lepiej nauczyć się wiersza poleceń i wyeliminować żmudne zadania związane z zarządzaniem plikami.

Czym jest Skrypty Shell?

Będąc użytkownikiem systemu Linux, użytkownik może bawić się przy użyciu wiersza polecenia. Czy podoba Ci się to, czy nie, są tylko niektóre rzeczy, które są wykonywane o wiele łatwiej za pomocą tego interfejsu 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 w rzeczywistości wprowadzasz komendy.

Niektórzy z was, którzy korzystali z 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ć dołączoną aktualną datę 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 /then/ 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ń.

To naprawdę jest moc skryptów, jak sądzę.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 również dla użytkowników Mac OS i Cygwin w systemie Windows. Ponieważ jest tak uniwersalny, powinieneś być w stanie pisać niezależnie od platformy. Ponadto, dopóki istnieją wszystkie polecenia, do których istnieją odnośniki, skrypty mogą działać na wielu platformach z niewielkim lub żadnym wymaganym dodatkiem. 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 odpowiednich 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 wszelki wypadek.

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życia, którą zapewnia nano, będę tego używać.

Skrypty Uprawnienia i nazwy Skrypty

są wykonywane jak programy, a aby tak się stało, muszą mieć odpowiednie uprawnienia. Możesz wykonywać skrypty wykonywalne, uruchamiając na nich następujące polecenie:

chmod + x ~ /somecrazyfolder/ script1

Pozwoli to każdemu uruchomić ten konkretny skrypt. Jeśli chcesz ograniczyć jego użycie tylko do swojego użytkownika, możesz użyć tego:

chmod u + x ~ /somecrazyfolder/ script1

Aby uruchomić ten skrypt, musisz przejść do odpowiedniego katalogu, a następnie uruchomić skrypt w ten 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 je uruchamiać, wpisując ich nazwę, podobnie jak inne polecenia, zamiast zmuszać cd do korzystania z 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" i kiedy próbująuruchom go w linii poleceń, nic się nie dzieje. Dzieje się tak, ponieważ powoduje konflikt z poleceniem testowym, które nie robi niczego 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 skryptowania

Jak już wcześniej wspomniałem, 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ć.

  1. Każdy skrypt powinien być z "#!/bin/ bash "
  2. Każda nowa linia jest nową komendą
  3. Linie komentarza zaczynają się od #
  4. Komendy są otoczone()

Hash-Bang Hack

Kiedy skorupa analizuje plik tekstowy, najbardziej bezpośredni sposób identyfikacji pliku jakoscenariusz polega na stworzeniu 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 huku( !) I ścieżki powłoki po hakowaniu, które ominie tę regułę komentarza i zmusi skrypt do wykonania z powłoką, na którą wskazuje ta linia.

Nowa linia = nowe polecenie

Każda nowa linia powinna być traktowana jako nowe polecenie lub element większego systemu. Jeśli na przykład instrukcje /then/ else przejmie wiele linii, ale każdy składnik tego systemu jest w nowej linii. Nie pozwól, aby polecenie spadł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. Przekształca to w linię komentarza, w której 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 łatwiej modyfikować twoje skrypty. 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 dniach podstawienia poleceń dokonywano za pomocą pojedynczych znaków( `, dzieli klawisz ~).Nie będziemy tego jeszcze dotykali, ale ponieważ większość ludzi wyrusza na poszukiwanie podstaw, dobrym pomysłem jest wspomnieć, że zamiast tego należy użyć nawiasów. Dzieje się tak głównie dlatego, że podczas zagnieżdżania - umieszczania poleceń w innych komendach - nawiasy działają lepiej.

Twój pierwszy skrypt

Zacznijmy od prostego skryptu, który umożliwia kopiowanie plików i dołączanie dat na końcu nazwy pliku. Nazwijmy to "datecp".Najpierw sprawdźmy, czy ta nazwa jest w konflikcie z czymś:

Widać, że nie ma wyjścia z którego polecenia, więc jesteśmy gotowi używać tej nazwy.

Stwórzmy pusty plik w folderze ~ / bin:

touch ~ /bin/ datecp

A, zmieńmy teraz uprawnienie, zanim zapomnimy:

Zacznijmy teraz 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ź wymaganą pierwszą linię 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ą zapisaną 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 możemy umieścić w zmiennej? Cóż, przechowujmy datę i godzinę!Aby to zrobić, zadzwonimy do komendy date.

Spójrz na poniższy zrzut ekranu, aby dowiedzieć się, jak zbudować wyjście polecenia date:

Widać, że 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 date.

Użyjmy ostatniej iteracji polecenia date, "date +% m_% d_% y-% H.% M.% S", i użyjcie tego w naszym skrypcie.

Gdybyśmy teraz zapisali ten skrypt, moglibyśmy go uruchomić i dałoby nam dane wyjściowe polecenia date, jak się spodziewaliśmy:

Ale zróbmy coś innego. Podajmy nazwę zmiennej, np. Date_formatted do tego polecenia. Odpowiednia składnia tego jest następująca:

zmienna = $( 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 będzie zawierało polecenie, należy zamiast nazwy zmiennej "date_formatted".

Oto przykładowy skrypt i jego wyjście:

Zwróć uwagę, że na wyjściu są dwa 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. $ date_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 zobaczysz, że dodałem opcję "$ 1".Podczas wykonywania skryptów znak dolara( $), po którym następuje numer, będzie oznaczać numerowany argument skryptu podczas jego wywoływania. Na przykład w następującej komendzie:

cp -iv Trogdor2.mp3 ringtone.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 odnaleźliśmy zmienną "date_formatted" z 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 ten skrypt i pozwoli mi skopiować dowolny plik do nowej lokalizacji i automatycznie doda datę i godzinę do końca nazwy pliku. Przydatny do archiwizowania rzeczy!

Skrypty powłoki są podstawą tworzenia systemu operacyjnego dla Ciebie. 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!