Spisu treści:
- Co to jest skorupa?
- Historia i łapanka pocisków
- Skrypty
- Rzut oka na linię poleceń systemu Unix / Linux
Wiersz poleceń w systemach Unix i Linux jest już bardzo wydajny, ale powłoki są jeszcze potężniejszym narzędziem, niż na pierwszy rzut oka. Możesz je dostosowywać i przełączać na zawartość swojego serca, o ile wiesz, jak to zrobić.
Co to jest skorupa?
Prawie każda instrukcja Uniksa i Linuksa ma standardowy schemat powłoki owijającej się wokół systemu operacyjnego, przypominającej pewnego rodzaju batonika. Powłoka naprawdę jest niczym innym jak interfejsem między systemem operacyjnym, włączając jądro, system plików i różne wywołania systemowe i użytkownika. Przez wiele lat był to jedyny interaktywny interfejs użytkownika, zanim graficzne interfejsy użytkownika stały się popularne w latach 80. Graficzne interfejsy użytkownika można również uznać za rodzaj powłoki, ponieważ pełnią one wiele takich samych funkcji: uruchamianie programów, konfigurowanie systemu i zarządzanie plikami.
Te skromne interfejsy tekstowe mają zaskakującą moc. Po pierwsze, są one pełnoprawnymi językami programowania. Przed pojawieniem się jeszcze potężniejszych języków skryptowych, takich jak Python, skrypty powłoki były idealne do pisania programów, które niekoniecznie wymagały mocy C. Nadal są przydatne do automatyzacji zadań systemowych i szybkiego prototypowania.
Posiadają również szereg funkcji, które ułatwiają pracę z plikami i znajdowanie ich. Jednym z najczęściej używanych jest „wildcarding” lub „globbing”. Prawie wszyscy użytkownicy systemów Unix i Linux znają symbole wieloznaczne „*” pasujące do dowolnego znaku. To jest właściwie zadanie powłoki. Różne pociski mają jeszcze potężniejsze opcje.
Jedną z charakterystycznych cech Uniksa jest możliwość przekierowania wejścia i wyjścia programu. Powłoka implementuje tę funkcjonalność.
Powłoka jest po prostu kolejnym programem, więc każdy programista posiadający odpowiednie umiejętności może go utworzyć. Przez lata pojawiło się kilka głównych pocisków.
Historia i łapanka pocisków
Chociaż na początku systemu operacyjnego istniało kilka powłok uniksowych, pierwszą, która zyskała duże uznanie poza Bell Labs, była powłoka Bourne Shell, nazwana na cześć Stephena R. Bourne'a. Główną innowacją powłoki było to, że obsługiwała funkcje programowania strukturalnego, umożliwiając po raz pierwszy użycie powłoki jako prawdziwego języka programowania. Jest tak niezbędny, że wszystkie współczesne wersje Unixa i Linuksa nadal go używają, chociaż zwykle jest to jedna z nowszych powłok emulujących powłokę Bourne'a.
Kolejną dużą powłoką była powłoka C, powszechnie nazywana „csh”. Ta skorupa została opracowana w UC Berkeley, stając się głównym składnikiem smaku BSD Uniksa. Jak sama nazwa wskazuje, jego składnia ma przypominać język programowania C, ale tak naprawdę została zaprojektowana do użytku interaktywnego.
Zawierał mechanizm historii, który pozwalał użytkownikom cofać się i powtarzać wszelkie wcześniej wydane polecenia bez konieczności ponownego wpisywania całej linii i ulepszoną kontrolę zadań, co ułatwiło wykonywanie wielu zadań. (Pamiętaj, że był to czas, gdy większość ludzi nadal korzystała z terminali tekstowych).
Kolejną dużą powłoką była Korn Shell, która również wyszła z Bell Labs. Nawiasem mówiąc, skorupa została nazwana na cześć Davida Korna, a nie zespołu. Główną innowacją powłoki Korna jest wprowadzenie edycji wiersza poleceń, jeszcze bardziej rozszerzającej funkcjonalność historii. Użytkownicy mogą cofać się i edytować polecenia, które wpisali, używając poleceń podobnych do edytorów vi lub Emacs.
Spośród głównych pocisków, Bourne Again Shell, czyli bash, jest najpopularniejszy od czasu jego wprowadzenia pod koniec lat 80. Ta powłoka, opracowana w ramach projektu GNU, zawiera innowacje powłok C i Korn, zachowując jednocześnie kompatybilność z powłoką Bourne'a, stąd nazwa. Jest to „standardowa” powłoka w większości dystrybucji Linuksa.
Z Shell (zsh), po raz pierwszy wydany w 1990 roku, to marzenie użytkownika wiersza poleceń. Ma nie tylko większość innych głównych funkcji, które mają inne powłoki, ale jest niesamowicie konfigurowalny dzięki wielu zaawansowanym funkcjom. Jednym z najpotężniejszych jest globalne rekurencyjne, które pozwala użytkownikom dopasowywać nazwy plików w podkatalogach podczas wydawania poleceń zamiast plików w bieżącym katalogu roboczym. Naprawdę zaawansowani użytkownicy mogą również dostosowywać opcje uzupełniania, dopasowując pliki bez konieczności ich całkowitego wpisywania. A dla maszynistek o grubych palcach może również poprawić pisownię. Ta powłoka jest tak zaawansowana, że jej strona podręcznika została podzielona na kilka bardzo długich sekcji.
Skrypty
Jak wspomniano wcześniej, powłoki to nie tylko interfejsy wiersza poleceń, ale potężne języki programowania. Zaletą skryptowania powłoki jest to, że można używać tego samego języka zarówno w regularnym interaktywnym użyciu, jak i w skryptach, co sprawia, że krzywa uczenia się jest znacznie bardziej płaska. Nowoczesne powłoki zawierają wszystkie standardowe funkcje języka programowania, w tym kontrolę przepływu, funkcje i zmienne. Niektóre z nich mają nawet zaawansowane struktury danych, takie jak tablice asocjacyjne.
Pomimo ich mocy programowanie w powłokach ma kilka pułapek. Największym problemem jest to, że zbyt łatwo jest pisać skrypty, które zależą od jakiegoś programu, który może nie znajdować się w innym systemie lub zależy od konkretnego smaku Uniksa lub Linuksa. Dlatego skrypty powłoki najlepiej nadają się do programów, o których wiesz, że będą uruchamiane tylko w jednym systemie. Jeśli próbujesz zbudować coś przenośnego i nie chcesz pisać programu w języku C, najlepiej jest pisać w innym języku skryptowym, takim jak Perl lub Python.
Rzut oka na linię poleceń systemu Unix / Linux
Pod powierzchnią linii poleceń Unix / Linux czai się więcej mocy. Ten artykuł może zainspirować Cię do zerknięcia pod maską ulubionej muszli i zobaczenia, co naprawdę możesz zrobić. Jeśli chcesz zająć się skryptami powłoki, możesz zajrzeć do książek Unix Power Tools i Learning the Bash Shell. Oryginalna praca Stephena R. Bourne'a na jego powłoce służy również jako dobre wprowadzenie do świata skryptów powłoki, nawet jeśli jest stara.