Dlaczego warto polubić linuksowy terminal
Wielu początkujących użytkowników narzeka na to, że w Linuksie trzeba korzystać z terminalu. Na forach podawane są dla wielu nic nie mówiące polecenia, wielu nowych użytkowników stara się unikać tego narzędzia jak tylko się da. Jeszcze inni twierdzą, że korzystanie z terminalu jest niewygodnie i w XXI w. wszystko powinno dać się wyklikać. Owszem da się, jednak ja chcę pokazać, że terminal to bardzo wygodne narzędzie, niekiedy wygodniejsze niż klikanie myszką. Oczywiście nie namawiam nikogo do korzystania z konsoli, jeśli wolisz klikać, twoja wola.
Ostatnimi czasy użytkownik Webnull pokazał, że w uniksowej konsoli można zrobić prawie wszystko, ja natomiast chcę pokazać rzeczy przydatne bardziej dla zwykłych użytkowników, rzeczy wykonywane na co dzień, które można sobie uprościć i nie są mocno związane z szeroko pojętą administracją systemami z rodziny Unix.
Czym tak naprawdę jest terminal? Terminal to inaczej emulator konsoli. Dlaczego emulator? Ponieważ użytkownik w trybie graficznym nie ma bezpośredniego dostępu do powłoki tekstowej i ten dostęp umożliwia terminal. Czym w takim razie jest konsola? Konsola oferuje bezpośredni dostęp do powłoki tekstowej, w której wykonywane są polecenia. Powłoka natomiast umożliwia komunikację użytkownika z jądrem systemu oraz zarządzanie systemem operacyjnym. Konsola umożliwia również dostęp do tak zwanych wirtualnych terminali. Użytkownik ma możliwość przełączania się pomiędzy wirtualnymi terminalami, w każdym z nich można zalogować się do powłoki systemowej. Na wirtualnym terminalu można uruchomić również Xserver, który odpowiada za tworzenie trybu graficznego oraz za obsługę wielu urządzeń, tj. jak myszka, klawiatura (obecnie tę funkcję przejął hal). Xserver w większości dystrybucji linuksowych uruchomiony jest na siódmym wirtualnym terminalu ale nic nie stoi na przeszkodzie, aby to zmienić, przykładem jest chociażby FreeBSD, w którym Xsverer uruchomiony jest domyślnie na dziewiątym wirtualnym terminalu.
Autodopełnienia
Pierwsza i jakże przydatna właściwość wielu powłok systemowych, to autodopełnienia nazw i poleceń. Autodopełnienie polega na uzupełnianie nazw plików czy poleceń po wciśnięciu klawisza TAB (tabulatora), o czym pisałem w poprzednim moim wpisie na podobny temat. Znacznie skraca to czas wykonywania poleceń, ponieważ skraca się czas ich wpisywania. Po prostu wpisując dane polecenie, wystarczy w trakcie jego wpisywania wcisnąć klawisz TAB, aby je uzupełnić. Opcja ta jest również przydatna, gdy czasami zapomni się nazwę polecenia, a zna się jego pierwszy człon.
Przykłady:
Przykłady będą wzięte raczej z codziennego użytkowania systemu bez jakichś administracyjnych wymysłów :) Jak wiadomo, system powinno się regularnie aktualizować, w zależności od dystrybucji robi się to codzienne albo na przykład raz w tygodniu. Z racji tego, że korzystam na co dzień z Ubuntu, na nim będę przedstawiał przykłady. Aktualizację przeprowadza się albo przy pomocy menedżera aktualizacji, albo przy pomocy Synaptica lub w terminalu. O ile sprawa z menedżerem aktualizacji jest prosta, ponieważ pojawia się tylko informacja o aktualizacji, o tyle w przypadku Synaptica sprawa jest już troszkę, może nie tyle skomplikowana, co czasochłonna, czyli
1. Należy uruchomić Synaptic, w tym celu trzeba przeklikać się przez menu; 2. Podać hasło administratora; 3. Kliknąć Odświeź; 4. Kliknąć Zaznacz wszystko do aktualizacji; 5. Zaakceptować zmiany.
W tym przypadku trzeba wykonać kilka czynności, w przypadku terminalu wystarczy tylko:
1. Uruchomić terminal lub go wywołać, jeśli korzysta się z terminalu typu drop-down, tj. Yakuake, Guake czy Tilda, więc czas uruchamiania terminalu nie wchodzi w grę, bo on już jest uruchomiony; 2. Wpisać dwa magiczne polecenia
sudo apt-get update sudo apt-get upgrade
lub tak naprawdę jedno
sudo apt-get update && sudo apt-get upgrade
Tutaj dochodzimy do sedna sprawy, autodopełniania. Polecenia wydaje się przydługawe ale gdy po sudo apt-g wciśnie się tabulator, powłoka dopełni polecenie sudo apt-get, natomiast, gdy po upd znowu wciśnie się tabulator, powłoka uzupełni polecenia do update i tym sposobem szybko wpisuje się polecenie sudo apt-get update, tak samo ciąg dalszy polecenia.
Czasami zdarza mi się i na pewno nie tylko mi, kopiować, przenosić lub usuwać jeden lub wiele plików z jednego miejsca w inne. Załóżmy, że chcę skopiować kilka plików z rozszerzeniem jpg i usunąć kilka innych o danym rozszerzeniu, załóżmy tar.bz2:
Kopiowanie wielu plików
cp /home/roobal/Pobrane/*.jpg /home/roobal/Obrazy/Tapety/Nowe/Fajne/
Usuwanie niechcianych plików
rm /home/roobal/Pobrane/*tar.bz2
W tym przykładzie dopełniane jest nie polecenie, a ścieżka do pliku. Gdy po poleceniu cp wpiszę /hom i wcisnę tabulator, powłoka uzupełni nazwę katalogu, gdy wcisnę po raz kolejny tabulator i jeśli jestem jedynym użytkownikiem systemu, automatycznie zostanie uzupełniona nazwa mojego katalogu domowego, czyli /home/roobal i tak dalej. Dodatkowo gdy podam mój katalog domowy, jako zmienna $HOME i wcisnę tabulator, powłoka automatycznie zamieni to na /home/roobal, więc nie muszę wpisywać całej ścieżki, a wystarczy jedynie:
cp $HOME/Pobrane/*.jpg $HOME/Obrazy/Tapety/Nowe/Fajne/
Gdybym chciał sprawdzić tylko listę plików w danym katalogu, chcąc to wyklikać, musiałbym:
1. Uruchomić menedżer plików; 2. Przejść do katalogu, który mnie interesuje; 3. Znaleźć w gąszczu plików te, które mnie interesują
Zajmuje to chwilkę czasu, więc tu z pomocą przychodzi polecenie ls lub dir, który wyświetli mi listę plików w kilka sekund. Przydatne jest również polecenie grep, dzięki któremu można otrzymać przefiltrowany wynik według wzorca.
Podpowiedzi
Powłoka może również użytkownikowi udzielać podpowiedzi nie tylko, dotyczących poleceń ale również nazw. Czasami zdarza się, że nie zna się pełnej nazwy pliku lub polecenia i wystarczy wówczas dwukrotnie wcisnąć tabulator, powłoka wyświetli dostępne podpowiedzi. Świetny przykład zaprezentował Docent na zeszłorocznym HotZlocie, kiedy prowadził sesję na temat Vyatta, polecam obejrzeć sobie relację, widać tam, jak Docent korzysta z autodopełnień oraz podpowiedzi oferowanych przez powłokę poleceń. Ktoś nawet w komentarzach zażartował, że Docent bardzo szybko pisze – to jest właśnie przykład na to, ile czasu można oszczędzić, korzystając z terminalu, klikanie myszką w panelu przeglądarkowym zajęłoby na pewno więcej czasu.
Przykład:
Przykładem niech będzie znów polecenie aktualizacji systemu, załóżmy, że nie pamiętam całego polecenia, wciskam dwukrotnie klawisz Tab i dostaję podpowiedzi
roobal@ubuntu:~$ sudo apt- apt-add-repository apt-cdrom apt-extracttemplates apt-get apt-mark apt-cache apt-config apt-ftparchive apt-key apt-sortpkgs roobal@ubuntu:~$ sudo apt-get up update upgrade roobal@ubuntu:~$ sudo apt-get up
i już mi się przypomina, jakie to miało być polecenie.
Aliasy
Powłoka Bash, która jest domyślną w wielu linuksowych dystrybucjach, umożliwia również definiowanie aliasów dla poleceń. Czymże są te aliasy? Alias, jak nazwa wskazuje, pozwala na definiowanie własnych poleceń i przypisywania poleceń systemowych do tych aliasów. Mówiąc po chłopsku, pod własnym poleceniem ukrywamy inne polecenia.
Kiedy to się przydaje? Wtedy, gdy dość często trzeba wykonywać dość długie, trudne do zapamiętania polecenia. Posłużę się tu znów przykładem aktualizacji systemu, czyli zamiast
sudo apt-get update sudo apt-get upgrade
lub
sudo apt-get update && sudo apt-get upgrade
można po prostu tak
aktualizuj
Swoją drogą, skoro system porozumiewa się z nami w języku polskim, to dlaczego użytkownik nie mógłby się porozumiewać z nim również w ojczystym języku :)
Takich aliasów można tworzyć do woli, zamiast
sudo apt-get install nazwa_programu
można wydać polecenie
instaluj nazwa_programu
Proste, a jakże użyteczne.
Skrypty powłoki
Aliasy to przydatna rzecz, jednak bardziej przydatną są skrypty powłoki. Właśnie dlatego warto znać chociażby podstawowe polecenia powłoki, aby móc napisać prosty skrypt. Oczywiście nie każdy jest administratorem czy programistą ale każdy może pisać nawet najprostsze skrypty, które mogą automatyzować pewne czynności, np. aktualizację systemu.
#!/bin/bash sudo apt-get update sudo apt-get upgrade -y
Taki skrypt można dodać do Crona i wykonywać, go automatycznie, np. codziennie, wówczas system będzie automatycznie aktualizowany o ustalonej porze. Aktualizacje i tak są logowane w /var/log/apt/history.log, więc zawsze można sprawdzić co i kiedy się aktualizowało.
Innym przykładem może być, np. zmiana adresu MAC karty sieciowej (MAC można zmienić jeszcze w inny sposób ale to jest tylko przykład).
#!/bin/bash sudo ifconfig eth0 down sudo ifconfig eth0 hw ether 00:00:00:00:00 sudo dhclient eth0
Polecenie sudo ifconfig eth0 up można pominąć, gdyż dhclient automatycznie podniesie (włączy) interfejs eth0. Zamiast wpisywać kilka poleceń ręcznie, wystarczy uruchomić skrypt i niekiedy zostanie on wykonany w kilka sekund. Dla przykładu, skrypt zmiany adres MAC (bez pobierania adresu IP z DHCP) wykonuje się dosłownie zaraz po wciśnięciu klawisza enter.
Jak widać, skrypty mogą pisać nawet najzwyklejsi użytkownicy ale można pisać i bardzie rozbudowane skrypty, o czym przekonał Was już Webnull.
Mam nadzieję, że większość z Was polubi pracę z terminalem albo przynajmniej nie będzie uważała tego narzędzia za zbędne i trudne w obsłudze, a przy okazji przekona się, jak wygodnie można pracować w systemie i nim zarządzać.