Co to są skrypty powłoki i dlaczego należy ich używać

Co to są skrypty powłoki i dlaczego należy ich używać

Powłoka to program w systemie operacyjnym Linux lub Unix, który umożliwia wprowadzanie poleceń do wykonania przez system. Po otwarciu okna terminala na komputerze z systemem Linux uruchamia program powłoki, który przedstawia interfejs do wprowadzania poleceń. Ten interfejs jest znany jako interfejs wiersza poleceń. Po wprowadzeniu polecenia jest ono wykonywane przez powłokę, a wynik jest wyświetlany na ekranie.





Oprócz możliwości interaktywnego akceptowania i wykonywania poleceń, powłoka może również wykonywać polecenia przechowywane w pliku. Ten tryb wykonania jest znany jako skrypty powłoki , aw tym artykule omówimy podstawy skryptów powłoki .





1. Historia muszli

Począwszy od Uniksa w latach 70. istniał program powłoki o nazwie Powłoka V6 opracowany przez Kena Thomsona. Była to interaktywna powłoka i brakowało jej możliwości tworzenia skryptów.





Po nim nastąpił Muszla Bourne'a w 1977 i pozostaje w użyciu do dziś jako domyślna powłoka dla źródło konto. Ta powłoka dodała możliwości skryptowe, które przez lata okazały się niezwykle przydatne w praktyce.

Dalszy rozwój pocisku w latach 80. doprowadził do powstania wielu popularnych wariantów pocisku, z których najpopularniejsze były Powłoka C i Powłoka Korna . Każda z tych powłok miała własną składnię, która w niektórych przypadkach drastycznie różniła się od oryginalnej powłoki.



Jedną z najpopularniejszych obecnie muszli jest Bash Shell . Bash oznacza Bourne-Znowu-Muszla i jest znacznie ulepszoną wersją oryginalnego Bourne Shell.

czy powinienem pobrać 32 czy 64 bit?

W tym artykule opisujemy skrypty powłoki dla Bash Shell .





2. Wykonywanie skryptu powłoki

Jak wykonać skrypt powłoki? Prosty. Po prostu przekaż ścieżkę skryptu jako argument do powłoki:

Przykładowy skrypt powłoki:





echo 'hello world'

Uruchom go w następujący sposób:

$ bash hello.sh
# prints
hello world

Notatka: Powłoka wymaga, aby linie były zakończone znakami LF (Line-Feed). Jeśli napiszesz skrypt powłoki w systemie Windows i spróbujesz wykonać go bezpośrednio w systemie Linux, możesz napotkać błędy. Windows używa kombinacji CR-LF (Carriage-Return-Line-Feed) do zakończenia linii. Należy to przekonwertować tylko na LF. Sprawdź w edytorze systemu Windows, jak to zrobić.

Istnieje inny sposób na wykonanie skryptu powłoki bezpośrednio jako polecenie. Wstaw następujący wiersz ( haszysz deklaracji) jako pierwszą linię twojego skryptu powłoki.

jak zrobić karteczkę w systemie Windows 10
#!/bin/bash

Dzięki tej zmianie nasz prosty skrypt powłoki jest teraz:

#!/bin/bash
echo 'hello world'

Teraz musisz sprawić, by plik skryptu był wykonywalny w następujący sposób:

$ chmod +x hello.sh

W tym momencie możesz wykonać plik skryptu bezpośrednio, bez konieczności jawnego odwoływania się do powłoki.

$ hello.sh
# prints
hello world

Przyjrzyjmy się teraz niektórym zaletom używania skryptów powłoki.

3. Automatyzacja zadań

Pierwszą zaletą korzystania ze skryptów powłoki jest automatyzacja często wykonywanych zadań. Załóżmy, że masz zadanie, które musisz wykonywać codziennie. Jeśli musisz codziennie wykonywać wiele poleceń w systemie Linux, możesz przechowywać te polecenia w pliku i uruchamiać skrypt. Przykłady obejmują:

  • Archiwizuj i przesyłaj plik lub folder codziennie do magazyn w chmurze takich jak S3.
  • Kompresuj pliki dziennika, które rosną każdego dnia.
  • Pobierz ceny akcji, przeanalizuj pobrane dane i wyślij wiadomość e-mail lub SMS, gdy zostaną spełnione określone warunki (zbyt wysokie lub zbyt niskie ceny).

4. Łączenie wielu poleceń

Oprócz automatyzacji częstych zadań, korzystne może być również łączenie wielu sekwencji poleceń w jedno polecenie. Zapamiętywanie pojedynczego polecenia jest znacznie prostsze niż wielu poleceń, nie wspominając o kolejności, w jakiej muszą być wykonywane.

Przykładem może być sekwencja startowa samego systemu operacyjnego Linux. W ramach rozruchu system operacyjny wykonuje szereg poleceń, aby wprowadzić system we właściwy stan. Te polecenia są w rzeczywistości skryptami powłoki, które działają pod /itp informator. Jeśli przyjrzysz się jednemu z tych skryptów powłoki, zdasz sobie sprawę ze złożoności uruchamiania systemu, które być może musiałeś wykonać ręcznie w przypadku braku skryptów powłoki.

Poniżej znajduje się przykładowy skrypt powłoki, /etc/profil , który jest wykonywany za każdym razem, gdy użytkownik się loguje. Wyobraź sobie wpisywanie tych poleceń ręcznie!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Łatwiejszy w rozwoju

Możliwe jest wykonanie tych samych działań, co skrypt powłoki wewnątrz zwykłego programu napisanego w C/C++. Jednak znacznie łatwiej jest napisać i debugować skrypt powłoki niż program w C/C++. Szczególnie do zadań administracyjnych systemu, które obejmują wykonywanie poleceń zewnętrznych, tworzenie i usuwanie plików i katalogów, przekierowywanie wyjścia itp.

Programy C/C++ są lepsze na znacznie niższym poziomie działania, takim jak wywoływanie wywołań systemowych, manipulowanie strukturami danych itp.

6. Przejrzystość

Skrypt powłoki, ze względu na to, że jest plikiem tekstowym, może być łatwo przeglądany w celu sprawdzenia, jakie działania wykonuje. W przeciwieństwie do tego, jedynym sposobem, w jaki kiedykolwiek dowiesz się, co robi program napisany w języku takim jak C/C++ (i skompilowanym do pliku wykonywalnego), jest to, czy zdecyduje się ci to powiedzieć lub czy masz dostęp do kodu źródłowego. Na przykład możesz sprawdzić, czy skrypt powłoki usuwa jakieś pliki, a jeśli potrzebujesz tych plików, możesz je skopiować do innej lokalizacji.

Dużo łatwiej jest też diagnozować problemy ze skryptami powłoki niż zwykłymi programami, ponieważ można spojrzeć na kod źródłowy. Czy ten skrypt nie działa, ponieważ katalog nie istnieje? Możesz zajrzeć do kodu skryptu i utworzyć katalog (chociaż dobrze zachowujący się skrypt powłoki powinien go sprawdzić i utworzyć, aby uniknąć takich błędów).

7. Przenośny

DO Skrypt powłoki można przenieść do innych systemów operacyjnych uniksowych i uniksopodobnych i uruchomić (jeśli obecna jest sama powłoka). Nawet podczas przesyłania skryptu powłoki z różnych architektur, takich jak x86, MIPS, Sparc itp., skrypty powłoki są znacznie bardziej przenośne niż programy C/C++.

Jedynym sposobem, w jaki program C/C++ może zostać przeniesiony i użyty w innym systemie, jest skopiowanie kodu źródłowego, zbudowanie programu i próba jego uruchomienia. Nawet wtedy może nie działać zgodnie z oczekiwaniami, jeśli używa kodu specyficznego dla architektury.

Teraz, gdy już wiesz, czym są skrypty powłoki i jakie są ich zalety, czy nie chciałbyś ich użyć do swoich zadań? Jakie problemy napotkałeś podczas korzystania z nich? Daj nam znać w komentarzach poniżej.

Amazon zamówienie dostarczone, ale nie odebrane
Udział Udział Ćwierkać E-mail 5 wskazówek, jak doładować swoje maszyny VirtualBox Linux

Masz dość słabej wydajności oferowanej przez maszyny wirtualne? Oto, co powinieneś zrobić, aby zwiększyć wydajność VirtualBox.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Powłoka Bash dla Linuksa
O autorze Jay Śridhar(17 opublikowanych artykułów) Więcej od Jaya Sridhar

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować