Blog (10)
Komentarze (22)
Recenzje (0)

Zrozumieć powłokę tekstową - troszkę historii

@ChomikZrozumieć powłokę tekstową - troszkę historii06.06.2010 19:12

Po przeczytaniu wpisu kolegi roobal'a Terminal w Linux - obiekt nienawiści użytkowników systemu Windows postanowiłem napisać jeszcze coś od siebie w komentarzu, ale po chwili stwierdziłem, że mam znacznie więcej do powiedzenia. Otóż większość ludzi, których spotykałem i którym zadawałem pytanie "Czy wiesz co to powłoka systemowa?" - robiło wielkie oczy. Jak widzą jak wklepuje polecenia na "czarnym ekranie" to nie rozumieją dlaczego nie chce używać myszki. Ale żeby naprawdę zrozumieć dlaczego to robię, to należy zagłębić się nieco w historię powłok i poznać ich zalety i w ogóle dowiedzieć się co to jest. Zatem do dzieła.

Każdy komputer to zwykła kupa elektroniki, która bez odpowiedniego oprogramowania jest po prostu bezużyteczna. Dlatego też musi być wyposażony w system operacyjny, który "wie" jak obsłużyć sprzęt i jak komunikować się z człowiekiem. To pierwsze robi jądro systemu, a drugie powłoka. I na tym można skończyć, ale ja jestem nieco ambitniejszy :) i postaram się jeszcze czegoś Was drodzy Czytelnicy nauczyć.

W latach sześćdziesiątych XX wieku większość systemów operacyjnych, uruchamianych na ówczesnych komputerach, miało charakter wsadowy. Nie istniały jeszcze znane dzisiaj nośniki informacji, dlatego do wprowadzania danych do komputera używano kart perforowanych. Operator takiej maszyny najpierw musiał wczytać karty z programem, a następnie w ten sam sposób dane. Wyniki na ogół przekazywane były w formie wydruku, a następnie analizowane. Jeżeli zauważono jakieś błędy to cały proces należało powtórzyć. Nie trudno zauważyć, że procesory używane w tamtych maszynach w 95% nic nie robiły, bo przygotowanie wsadowych kart perforowanych zajmowało bardzo dużo czasu. Dlatego projektanci rozpoczęli prace nad systemem, który byłby wyposażony w interpreter umożliwiający operatorowi możliwość sterowania pracą programów poprzez wydawanie poleceń. Jednocześnie pracowano nad systemem umożliwiającym uruchamianie równolegle wielu programów przez wielu operatorów. Nie będę tutaj wdawał się w szczegóły techniczne poszczególnych systemów, napisze tylko, że pierwszym takim systemem był CTSS (ang. Cray Time Sharing System), później MULTICS (ang. Multiplexed Information and Computing Service), aż w końcu jeden z twórców MULTICS'a - Ken Thompson razem z Dennisem Ritchie napisali pierwszego UNIX’a.

I zanim o powłoce to troszkę o UNIX'e. UNIX przejął wiele cech MULTICS’a. Chodzi tu głównie o umowne reprezentowanie urządzeń plikami i wyodrębnienie interpretera poleceń, czyli celowo nie integrowano powłoki z samym systemem operacyjnym. Komputery PDP-11, na których system UNIX miał być uruchamiany, nie były zdolne do wykonywania obszernych programów. Realizacja założonych zadań wymagała ich podziału na mniejsze jednostki zadaniowe wykonywane poprzez wywołania odpowiednich programów. Ostatecznie ograniczona przestrzeń adresowa architektury maszyn goszczących system przyczyniła się do powstania mniejszych, prostszych, ale za to bardzo wyspecjalizowanych programów. Skoro wszystko jest plikiem (a nawet to co nim nie jest - jak dodają złośliwi) to obsługa całego systemu sprowadza się do edycji plików. Należy pamiętać, że wtedy nie znano jeszcze GUI więc tworzono tysiące narzędzi tekstowych do edycji plików. Skoro tak, to z czasem powłoki systemowe wyposażono w te narzędzia. Aż wreszcie w 1977 roku niejaki Pan Stephena Bourne udostępnił własną powłokę dla systemu UNIX, którą nazwana powłoką Bourne'a, chociaż lepiej znana jest pod nazwą sh. Powłoka ta była rewolucyjnym rozwiązaniem, bo umożliwiała tworzenie i uruchamianie w niej skryptów! To bardzo istotna funkcjonalność bo wreszcie można było napisać skrypt (w języku programowania powłoki), w którym dało się automatycznie edytować tekst wykorzystując istniejące już, specjalizowane narzędzia. Ponadto użytkownik miał pełną kontrolę nad deskryptorami wejścia/wyjścia oraz przepływem danych.

Poniżej postaram się wyjaśnić jak to działa i co to nam daje za pomocą bardzo prostego polecenia.

cat tekst.txt | grep stokrotka >> nowytekst.txt

cat tekst.txt - proste polecenie wyświetlenia tekstu na ekranie. W praktyce działa to tak, że zawartość pliku tekst.txt jest kierowana na standardowy strumień wyjściowy (STDOUT), czyli na ekran. Ale można to poddać modyfikacji za pomocą operatora potoku "|". Działa to tak, że STDOUT polecenia cat jest kierowany na standardowy strumień wejściowy (STDIN) polecenia grep. (Warto zauważyć, że grep nie jest poleceniem wbudowanym w powłokę, ale zupełnie oddzielnym programem mającym własne parametry.) Ten z kolei wyszukuje w tekście słowa "stokrotka" i na STDOUT (czyli na ekran) kieruje jedynie wiersze, w których to słowo występuje. Ale tutaj napotykamy na operator przekierowania strumienia ">>", który zmienia STDOUT na plik o nazwie nowytekst.txt. Finalnie w pliku nowytekst.txt otrzymujemy tylko wiersze z pliku tekst.txt zawierające wyraz "stokrotka".

A teraz zastanówmy się nad tym ile czasu potrzebujemy żeby ten sam program napisać np. w języku C?

Po raz kolejny przypominam, że obsługa całego systemu polega na edycji plików, co możemy zrobić bezpośrednio z konsoli mając do dyspozycji tysiące narzędzi typu grep. Czyli reasumując, możemy w konsoli zrobić dosłownie wszystko! Biorąc pod uwagę fakt, że do dyspozycji mamy wiele innych powłok np. ksh, csh czy bash, które są tylko ulepszeniem powłoki sh, to otrzymujemy w pełni funkcjonalne narzędzie do administrowania systemem.

W systemach Microsoftu też są konsole tekstowe. Np. command.com dla sytemu DOS, czy cmd.exe dla systemu Windows, czy wreszcie PowerShell, za pomocą którego podobno można wykonać każde zadanie administracyjne w systemie Windows. Korzysta się z nich właśnie dlatego, że pewnie zadania można wykonać po prostu szybciej wpisując proste polecenia. Dla przykładu podam ot choćby sprawdzanie naszego adresu IP i MAC karty sieciowej w Windows. Kto z Was robi to inaczej niż uruchamiając powłokę cmd i wklepując polecenie ipconfig /all? I dlaczego nie spotkałem jeszcze nikogo, kto robi to inaczej? Ale w Windows mało kto na co dzień używa powłoki tekstowej, bo po prostu niewiele da się w niej zrobić (wyłączając PowerShell). Poza tym, Okienka są tworzone do obsługi klikanej, a polecenia tekstowe są niejako dodawane na siłę. Zupełnie inaczej jest w UNIX'ach. Tutaj niemal wszystko jest tworzone do obsługi z poziomu konsoli, a do tego dodawany jest interfejs GUI.

Podsumowując odpowiem wreszcie na pytanie "dlaczego terminal jest obiektem nienawiści użytkowników Windows". Bo w cmd.exe nie da się administrować systemem, a PowerShell jest mało znany (i według mnie nieintuicyjny). Zatem z punktu widzenia "Windowsiarza" konsola tekstowa jest po prostu zbędna. Dlatego polecam nauczyć się PowerShell i wtedy zobaczymy, czy terminal śmierdzi :).

Na zakończenie chciałbym zaproponować serię artykułów o powłoce bash i jej języku skryptowym. Tak się składa, że bash był tematem mojej pracy magisterskiej i mam sporo na jej temat do powiedzenia :)

Pozdrawiam

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.