Terminal w Linux - obiekt nienawiści użytkowników systemu Windows.
06.06.2010 | aktual.: 25.12.2011 14:23
Pod moim ostatnim wpisem w komentarzach pojawiła się wypowiedź jednego z użytkowników jakoby to terminal był złem koniecznym, którym trzeba się koniecznie posługiwać aby cokolwiek osiągnąć w systemie Linux/Unix, przy okazji inspirując mnie do kolejnego wpisu. Użytkownik notgnucy na łamach blog.linux.pl wyjaśnił po części dlaczego powłoka tekstowa śmierdzi dla przeciętniaka, ja oczywiście postanowiłem dodać swoje trzy grosze.
Wielu użytkowników Windowsa przyzwyczajonych, że prawie wszystko mogą wyklikać sobie w systemie narzeka na potrzebę korzystania z konsoli bądź terminala w systemach Linux/Unix. Tak w ogóle czym się różni konsola od terminala? Konsola to inaczej powłoka systemowa, zwana też trybem tekstowym. Natomiast terminal działa w trybie graficznym i jest emulatorem konsoli. Dlatego większość użytkowników będzie raczej korzystała z terminala niż konsoli i na tym się skupię.
Czy korzystanie z terminala rzeczywiście jest takie konieczne i niczego nie można wyklikać? Oczywiście, że nie! Obecnie systemy dedykowane na komputery domowe tj. Ubuntu czy OpenSUSE posiadają masę graficznych aplikacji, narzędzi czy centrów zarządzania systemem, co sprawia że używanie terminala jest naprawdę zbędne. Narzędzie takie jak YaST, które tak na prawdę jest aplikacją konsolową posiada również GUI, czyli graficzną nakładkę, jest bardzo rozbudowanym i potężnym narzędziem, które docenił już niejeden użytkownik a spotkałem się wręcz z opinią, że Panel Sterowania z Windows wymięka przy nim. Przy pomocy przykładowego YaST można skonfigurować zarówno cały system, zarządzać graficznie serwerami DHCP, WWW, FTP, Sambą itp. jak i instalować oprogramowanie z tak zwanego repozytorium i to wszystko w jednym miejscu. W dystrybucjach opartych na pakietach deb jak Debian czy Ubuntu również istnieją graficzne narzędzia zarówno do zarządzania systemem jak i instalacji oprogramowania, tj. Centrum Oprogramowania Ubuntu, Synaptic, Adept czy narzędzia do samej konfiguracji środowiska graficznego jak Gconf Editor dla Gnome lub bardziej przyjazny Ubuntu Tweak czy Ustawienia systemowe w KDE, Network Manager Gnome czy KNetworkManager dla KDE lub Wicd do konfiguracji sieci albo narzędzia pomagające w instalacji sterowników własnościowych. W większości innych dystrybucji tego typu narzędzia można doinstalować
Skoro istnieje tyle graficznych narzędzi dlaczego, więc trzeba korzystać jeszcze z terminala i klepać jakieś polecenia? Przecież to nie przyśpiesza pracy a klikanie jest szybsze. Tak samo myślałem, gdy byłem początkujący i gdy nie znałem możliwości danej powłoki. To właśnie brak wiedzy powoduje, że terminal/konsola wydaje się nie do opanowania. Nieznajomość poleceń wydaje się, że używanie terminala to koszmar a w rzeczywistości tak nie jest. Owszem trzeba wykuć się na blaszkę pewnych poleceń ale te polecenia się utrwalają i nauka kolejnych przychodzi z łatwością. Okej, wszystko ładnie, pięknie ale dlaczego na forach każą wpisywać polecenia do terminala? Przyczyna jest bardzo prosta: po pierwsze, większość zaawansowanych użytkowników zna polecenia praktycznie na pamięć, po drugie należałoby się zastanowić czy wygodniej nam pomagającym jest podać jedno lub dwa polecenia czy klepać instrukcję obsługi?
Przykład:
Co jest wygodniejsze przy pomaganiu komuś na forum? Zaproponować polecenie instalacji pakietu, np. klienta poczty Thunderbird w Ubuntu?
sudo apt-get install thunderbird thunderbird-locale-pl
Czy szczegółowa instrukcja jak to zrobić w Synaptic?
1. Kliknij menu System; 2. Z podmenu Administracja wybierz Menedżer pakietów Synaptic; 3. Podaj hasło administratora; 4. W okienku szybkie wyszukiwanie wpisz thunderbird; 5. Gdy znajdzie, kliknij na pakiecie thunderbird oraz na pakiecie thunderbird-locale-pl i wybierz zaznacz do instalacji; 6. Kliknij Zastosuj; 7. W nowym oknie znowu kliknij Zastosuj; 8. Poczekaj aż program się pobierze i zainstaluje; 9. Po instalacji kliknij w okienku Zamknij; 10. Zamknij program Synaptic.
Co jest wygodniejsze? Klepnięcie jednego polecenia czy klikanie? Dla nas pomagających na forach zdecydowanie wygodniejsze jest podanie nawet kilku poleceń niż podawanie instrukcji obsługi programu. Czy instalacja powyższego programu jest mniej wygodna lub trudniejsza od podwójnego kliknięcia na pliku z rozszerzeniem exe? Tak poza tym pakiety deb czy rpm też można instalować dwuklikiem.
Oprócz tego niektórzy użytkownicy w tym ten jeden z komentarza twierdzą, że w konsoli wcale nie zrobi się pewnych rzeczy szybciej a klikanie jest wygodniejsze, czy aby na pewno? Powłoka daje spore możliwości i gdy się je pozna to można się przekonać, że praca w trybie tekstowym jest bardzo wygodna.
Większość powłok oferuje autouzupełnianie poleceń i nie tylko poleceń. Polega to na tym, że klepie się jakieś polecenie i nie trzeba tak naprawdę podawać go w całości, wystarczy wcisnąć klawisz TAB aby polecenie się uzupełniło. Jest to przydatne przy długich poleceniach ale jeszcze bardziej przydatne, gdy trzeba podać ścieżkę bezwzględną do danego pliku, np. gdy chce się go skopiować.
Przykład:
cp -r /usr/share/backgrounds/ $HOME
Ktoś by powiedział lepiej wyklikać, tj. przejść do katalogu /usr/share/ skopiować katalog backgounds, następnie przejść do katalog /home i wkleić. Można by się ścigać na czas, konsolowiec na pewno zrobiłby to szybciej niż klikacz a robi się to tak:
cp -r /us[tab]r/sh[tab]are/back[tab]grounds $HO[tab]ME
legenda: [tab] oznacza wciśnięcie klawisza tab.
Ktoś kto pisze szybko na klawiaturze na pewno szybciej wykona operację kopiowania niż klikacz nawet jeśli szybko klika, bo trzeba doliczyć jeszcze czas otwierania się menedżera plików i czas otwierania poszczególnych katalogów ;) Jako ciekawostkę dodam, że wiersz poleceń Windowsa również oferuje takie autouzupełnianie poleceń ;) Ponadto graficzne kopiowanie nie udostępnia wielu opcji dostępnych przez konsolowe narzędzie cp.
Dodatkowo znajomość zmiennych powłoki dodatkowo przyśpiesza pracę, w tym wypadku zmienna $HOME oznacza ścieżkę do katalogu domowego aktualnie zalogowanego użytkownika, więc nie muszę klepać całego /home/roobal. Innym skrótem jest jeszcze użycie tyldy, która oznacza ogólnie katalog domowy, czyli katalog /home inaczej ~/ = /home/roobal (w przypadku zalogowania na koncie użytkownika) lub ~/other_user = /home/other_user (w przypadku zalogowania na innym koncie niż użytkownika, do którego należy katalog domowy).
Oprócz tego powłoka zapamiętuje polecenia, np. powłoka Bash zapisuje wszystkie polecenia użytkownika w $HOME/.bash_history a polecenia użytkownia root w /root/.bash_history, między innymi dlatego podawanie hasła w terminalu nie wyświetla żadnych znaków. Zapisywanie poleceń w hostorii sprawiają, że powtarzające się polecenia można szybko wywołać przy pomocy klawiszy ze strzałką góra/dól lub skrótem klawiszowym jeśli takowy jest zdefiniowany. Taką opcję windowsowy wiersz poleceń również posiada. Zakładając, że wykonałem powyższe polecenie kopiowania i teraz chcę wykonać kolejne, które polega na skopiowaniu tego samego katalogu do innego katalogu niż mój katalog domowy. W tym celu nie muszę klepać tego samego polecenia od nowa, wystarczy że przywołam poprzednie i zmienię tylko katalog docelowy (ten do którego chcę kopiować):
[arrow up] cp -r /usr/share/backgrands $HOME[ backspace ] cp -r /usr/share/backgrounds ~/other_user
legenda: [arrow up] - wciśnięcie klawisza ze strzałką do góry aby przywołać polecenie, [ backspace ] - użycie klawisza usuwania treści aby skasować $HOME i zastąpić jest przez ~/other_user.
Takich udogodnień jest więcej i każda powłoka charakteryzuje się swoimi cechami.
Oczywiście nikogo nie namawiam do korzystania z terminala, moim zamierzeniem jest pokazanie tylko, że ludzie korzystają z niego dlatego, że dla wielu jest to wygodniejsze niż klikanie. Znam też kilka osób co nawet we wszystkoklikalnym Windowsie korzystają z wiersza poleceń. Dla wielu osób wygodniejsze jest klikanie i nikt za to ich nie tępi, dlatego klikacze nie powinni tępić terminala. Każdy niech używa co dla niego wygodne i niech tak pozostanie.