Współczesne komputery i systemy operacyjne dają użytkownikowi nieograniczone możliwości. Jednak nie zawsze klikanie myszką i korzystanie z graficznych interfejsów jest najbardziej efektywną metodą działania. Skrypty i powłoki systemowe oferują alternatywne, często bardziej zaawansowane i elastyczne metody pracy z komputerem. 

Choć dla wielu terminy “powłoki teksowe” czy “wiersz poleceń” mogą brzmieć zastraszająco, jak wyrok dziesięciu lat pracy w kamieniołomach, prawda jest taka, że podstawy ich używania są dostępne dla każdego, kto chce nieco pogłębić swoją wiedzę o komputerze. 

Bez względu na to, czy jesteście początkującymi użytkownikami, czy doświadczonymi entuzjastami technologii, ten artykuł dostarczy Wam cennych informacji i wskazówek, jak uczynić komputer bardziej podatnym na polecenia. 

Czym jest powłoka i jakie są jej rodzaje?

Termin “powłoka tekstowa” może brzmieć jak relikwia z minionych czasów. Ale w rzeczywistości, powłoka ta jest niezastąpionym narzędziem, które pozwala na bezpośrednią, złożoną, a jednocześnie precyzyjną i klarowną interakcję z systemem operacyjnym. 

W świecie wizualnych ikon i interfejsów dotykowych powłoki tekstowe pozostają nieocenionym rozwiązaniem dla tych, którzy chcą naprawdę zrozumieć i kontrolować swój komputer, a także zaoszczędzić czas i środki finansowe, co szczególnie istotne podczas realizowania projektów komercyjnych. W zależności od preferencji i potrzeb użytkowników, powłoki systemowe można podzielić na dwie, główne rodziny.

Graficzne powłoki skupiają się na wizualnych interakcjach, gdzie dominują elementy takie jak kursor, dotyk czy ikony. Przykłady takich powłok to: 

  • Aqua (charakterystyczna dla macOS), 
  • Windows Shell,
  • Gnome, KDE i Unity spotykane w różnych wariantach systemu Linux oraz innych systemach operacyjnych.

Powłoki tekstowe z kolei bazują na wpisywaniu poleceń za pomocą klawiatury. Dla wielu specjalistów IT stanowią one esencję precyzji i kontroli nad systemem. Przykłady to: 

  • Dobrze znany użytkownikom Windows cmd.exe, a także PowerShell
  • Dla systemów Linux, Mac i innych, unixowych mamy do wyboru takie powłoki jak sh oraz jego liczne warianty, w tym popularne bash czy zsh. W świecie open-source liczne warianty tej kategorii powłok pozwalają na dobór rozwiązania pod konkretne wymagania. 

Shell’e i ich najważniejsze zalety 

Powłoki systemowe graficzne: 

  • Niski próg wejścia dla użytkownika kosztem utraty funkcjonalności* 
  • Mogą wywoływać polecenia powłoki tekstowej jako reakcja na różnego rodzaju zdarzenia np. użycie skrótu klawiszowego 
  • Często interfejs graficzny jest przyjaznym opakowaniem programu przeznaczonego do użytku w środowisku tekstowym

* znacznie ciężej wykonywać akcje “power usera” z poziomu powłoki graficznej

Powłoki systemowe tekstowe: 

  • Podobna obsługa niezależnie od systemu operacyjnego
  • Można manipulować oknami i programami zarządzanymi przez powłokę graficzną, gdy ta udostępnia odpowiedni interfes
  • Trzymając się standardu komunikacji, pozwala łatwo łączyć własne jak i inne programy oraz skrypty w jeszcze większe zestawienia, które znacznie poszerzają nasze możliwości.
  • Łatwe łączenie (orkiestracja) wielu programów za pomocą relatywnie prostych skryptów.

👉W systemach Unixowych owa łatwość występuje od dawna

👉Windows i zamknięte oprogramowanie zaczynają coraz lepiej wspierać automatyzację z poziomu wiersza poleceń

👉Programy o otwartym źródle też bardzo dobrze automatyzuje się z powłoki (nawet jeśli program jest typowo graficzny). W szczególności warto zapoznać się z formatem plików obsługiwanych przez dany program (szczególnie gdy pliki te są plikami tekstowymi), oraz z parametrami uruchomieniowymi. Zdarza się, że dostępne są również inne metody komunikacji z programem.

💡 Uwaga! Zarówno plusem jak i minusem powłok tekstowych jest ich składnia. 

Plus:  Składnia jest niesamowicie wygodna przy integrowaniu różnych komend (w porównaniu z normalnymi językami programowania),

Minus: Operacje logiczne czy arytmetyczne, złożone przetwarzanie nie jest zbyt wygodne ani szybkie w przypadku składni powłok tekstowych. Często powłoka musi wywołać osobny program, do którego przekazuje dane do analizy. W innych przypadkach złożoność składni może być utrudnieniem.

Co zrobić, żeby było efektywniej? 

💡 Nasz PRO tip: 

Lepiej napisać skrypt Pythona czy Javy (Od wersji JDK 9 dostępny jest jshell, który umożliwia między innymi wykonywanie skryptów) do przetwarzania danych i połączyć te programy za pomocą skryptu powłoki. 

Powłoki systemowe wywdzące się ze środowiska unixowego

Najbardziej znane przykłady to ‘bash’ i “zsh”, który od niedawna mocno zyskuje na popularności. Każda z nich ma swoją specyfikę, historię i zastosowanie, ale wszystkie łączy jedno — umożliwiają głęboką, tekstową komunikację z maszyną. 

Poznając te powłoki, mamy największe szanse na szybkie przesiadanie się pomiędzy systemami oraz pisanie uniwersalnych skryptów dostosowanych do wszystkich rodzajów systemów.

Dobrze wiedzieć, jakie są różnice w składni pomiędzy bash i zsh a podstawowym sh, gdyż czasami na okrojonych systemach np. Systemach wbudowanych mamy dostępne tylko proste implementacje, takie jak ash, które nie dostarczają tylu możliwości co popularniejsze bash i ostatnio zyskujący na popularności zsh. Zwykle da się doinstalować bardziej przekombinowane i przerośnięte powłoki, ale czy warto?

💡 Nasz PRO tip:

W środowisku systemu Windows też domyślnie dostępne są powłoki tekstowe. Charakterystyczne dla tej rodziny systemów są cmd oraz PowerShell. 

Bardzo przydatne jest kojarzenie podstawy PowerShell i cmd.exe, gdyż czasami nie mamy możliwości doinstalowania innych powłok tekstowych w systemach Microsoftu. Oba, typowo Windowsowe narzędzia, uzupełniają się wzajemnie, pozwalając na omijanie ograniczeń jednej powłoki za pomocą drugiej.

Skrypty i komendy — teoretycznie 

Komendy: 

W świecie powłok tekstowych napotykamy na dwie, fundamentalne kategorie komend: komendy powłoki oraz komendy systemowe

Pierwsze z nich, czyli komendy powłoki, są specyficzne dla konkretnej powłoki i dostępne są jedynie w jej obrębie. Przykładem może być komenda ‘cd’, która, chociaż występuje w wielu powłokach, może działać nieco inaczej w zależności od konkretnego środowiska. 

Z kolei komendy systemowe to niezależne programy zainstalowane w naszym systemie. Możemy je wywołać z dowolnej powłoki, a ich działanie pozostanie niezmienne, bez względu na używaną przez nas powłokę. To kluczowa różnica, która pozwala zrozumieć, jak komunikujemy się z naszym systemem przez interfejs tekstowy.

💡 Nasz PRO tip: 

Można sprawdzić, czy dana komenda jest komendą systemową za pomocą komendy which na powłokach zbliżonych do `sh`. W powershellu: `gcm` lub `Get-Command`

Skrypty: 

Skrypt, czyli ustandaryzowany zestaw kroków do wykonania. Może być wykonywany ręcznie, gdy piszemy / kopiujemy komendy lub automatycznie przez wskazanie pliku zawierającego uporządkowany zbiór komend przeznaczonych do uruchomienia. Chociaż możliwe jest ręczne wprowadzanie lub kopiowanie poleceń, prawdziwa magia zaczyna się, gdy korzystamy z automatyzacji. Zdarza się nawet, że towarzyszy temu przyjemny dreszczyk emocji

żartobliwie o powłokach systemowych
1

Jednym z największych atutów powłok tekstowych jest niesamowita łatwość tworzenia skryptów. (choć, trzeba mieć z tyłu głowy, że im dalej w las, tym więcej drzew oraz dzikich zwierząt czy innych krogulców) Wszystko, co wprowadzamy bezpośrednio w terminalu, może zostać zapisane w identycznej formie w pliku tekstowym. Następnie ten plik może zostać uruchomiony jak jedno polecenie, co sprawia, że cały zestaw instrukcji wykonuje się automatycznie. 

To nie tylko oszczędza czas, ale także minimalizuje ryzyko błędów wynikających z ręcznego wprowadzania komend. Skrypty to potężne narzędzie w rękach każdego użytkownika powłoki.

Czemu skrypt jest dobrym rozwiązaniem?

  • W większości przypadków użytkownicy mogą po prostu uruchamiać skrypt bez konieczności ingerencji
  • Skrypty są elastyczne i umożliwiają modyfikacje w sytuacjach, gdy zachodzi taka potrzeba.
  • Ale! Umożliwiają przygotowanie środowiska uruchomieniowego pod bardziej złożone programy — takie, które będą realizować więcej funkcji 
  • Sekwencyjne wykonywanie zestawu komend gwarantuje znaczącą optymalizację procesu, a co za tym idzie usprawnienie pracy oraz efektywność działania.
  • Automatyzacja zapewnia spójność i eliminuje ryzyko błędów wynikających z ręcznego przepisywania rozkazów / poleceń / komend, co dodatkowo pozwala zaoszczędzić czas i zasoby.

Instrukcja jak zacząć przygodę ze skryptami

  1. To, co kopiujecie, przepisujecie, często wprowadzacie z palca do konsoli- zapiszcie jako skrypt. 
  2. Twórzcie skrypty- nawet te najbardziej koślawe! Każdy z nich to wiedza jak poradzić sobie z danym problemem: nie musicie szukać w internecie jak działa if lub pętla, gdy macie przykład na komputerze. 
  3. Kopiujcie (ze zrozumieniem 🙂) gotowe rozwiązania ze swoich skryptów.
  4. Skrypty trzymajcie w osobnym katalogu. Dlaczego? Jeśli takowy kawałek kodu potrzebuje wykonać coś w innym miejscu, może zawsze przejść do tej ścieżki za pomocą cd lub pushd / popd, a osobne katalogi pomagają utrzymać porządek.
  5. Udostępniajcie skrypty w formie repozytorium. Dzięki temu możecie do nich wrócić albo przekazać komuś, kto potrzebuje poradzić sobie z czymś, co Wy już ogarnęliście.
  6. Nie należy się wstydzić! Skrypt jest narzędziem, niekoniecznie gotowym produktem. Jest też formą notatki: jak poradzić sobie z danym problemem.
  7. Stwórzcie katalogi:
    • Prywatne — to, co jest uniwersalne:
    • Firmowe — pod projekty firmy.
    • Klienta — pod projekty klienta. Dzieląc się ciekawostkami z klientem, sami systematyzujemy własną wiedzę. Korzystają z niej także nasi współpracownicy.
  8. Poświęć 20% swojego czasu, by zautomatyzować 80% danego zagadnienia — Pamiętajcie! Nie zawsze mamy czas, by dograć wszystko na ostatni guzik i nie zawsze warto, gdy robimy narzędzie na własny użytek. 
organizacja pracy a powłoki systemowe
2

💡 Nasz PRO tip: 

Metoda małych kroczków!

  • Zautomatyzujcie jeden krok (najbardziej upierdliwy i możliwie najprostszy)
  • Potem zautomatyzujcie kolejny
  • Spróbujcie zautomatyzowane kroki wywołać jeden po drugim (albo jako jeden skrypt, albo skryptem wołajcie inne skrypty)

W środowisku technologicznym posiadamy szereg specjalistycznych programów dedykowanych do realizacji określonych zadań. Te aplikacje, zoptymalizowane z myślą o konkretnych operacjach, stanowią niezbędne narzędzia w naszym arsenale. 

Kluczem do pełnej efektywności ich wykorzystania jest powłoka, która zapewnia sprawne łączenie i integrację tych narzędzi. Rozumienie roli powłok tekstowych jako narzędzia służącego do efektywnego połączenia drobnych programów i skryptów w różnych językach jest kluczowe. Zwłaszcza w kontekście środowisk, gdzie uruchamianie zewnętrznych aplikacji bywa uciążliwe. 

Analogicznie do cieśli, który dysponuje różnego rodzaju młotkami przystosowanymi do specyficznych zastosowań, wykorzystanie powłoki pozwala na maksymalizację korzyści płynących z połączenia różnorodnych technologii, prowadząc do lepszej efektywności i oszczędności czasu.

  1. źródło: https://www.reddit.com/media?url=https%3A%2F%2Fpreview.redd.it%2F6ll9ab69kou51.png%3Fauto%3Dwebp%26s%3D9fec14a3398d5386c6911fcb5e462d9d57ceed48 ↩︎
  2. źródło: https://www.reddit.com/r/ProgrammerHumor/comments/g9j8c6/cries_in_powershell/ ↩︎