Wprowadzenie do konsoli tekstowej

Wstęp

Zostawmy w spokoju wszelkie dywagacje na temat rozróżnienia terminala od konsoli i powłoki, basha od sh i xterma od rxvt. Poniższy tekst jest przeznaczony dla ludzi, którzy próbują się nauczyć obsługi "tego DOS-a".

Czym jest tryb tekstowy? Powinieneś to już wiedzieć. Na pewno otworzyłeś kiedyś terminal w swoim środowisku graficznym, albo co gorsze, system zamiast wystartować w środowisku graficznym, wyświetlił czarne tło i szare literki. No więc to jest właśnie tryb tekstowy. Po co on jest, skoro można użyć wygodnego środowiska graficznego? No cóż, Linux od zawsze działał w trybie tekstowym, a interfejs graficzny powstał jako nakładka na polecenia tekstowe. Dziś środowiska graficzne są bardzo zaawansowane i wiele ich funkcji nie bazuje już na tekstowych programach. Wiele funkcji, tak. Ale zwykle nie te najważniejsze.

Co takiego ważnego można zrobić przy użyciu trybu tekstowego?

Wierzcie lub nie, ale te czynności można wygodnie wykonywać w trybie tekstowym i wiele osób dzisiaj je wykonuje właśnie tak, ponieważ programy tekstowe są szybsze i mają mniejsze wymagania. Często też są... wygodniejsze.

Jeśli tryb tekstowy jest taki super, po co nam środowiska graficzne? - można by przewrotnie zapytać

Niektóre czynności po prostu wykonuje się w nich łatwiej i szybciej. Do tego niektórych rzeczy nie można łatwo wykonać w trybie tekstowym.

Spróbujmy jednak drążyć temat... dlaczego nowoczesne programy graficzne takie jak K3b wykorzystują do swoich podstawowych czynności (w tym przypadku nagrywanie) programy tekstowe (cdrecord, growisofs)? Zadajmy inaczej pytanie: dlaczego programy spełniające ważne funkcje powstają w trybie tekstowym, a programy graficzne to tylko nakładki, uprzyjemniające pracę i wprowadzające w nieznacznym stopniu własną funkcjonalność? Odpowiadam: bo taka jest filozofia. Programy graficzne powstają dla konkretnego środowiska, posiadają specyficzne funkcje, integrują się z innymi programami. Program tekstowy zaś można łatwo przenieść na inny system operacyjny, wykorzystać w skrypcie do automatyzacji pracy lub zbudować na jego podstawie wyspecjalizowane urządzenie. Dodatkowo, twórcy środowisk graficznych mogą z jego wykorzystaniem napisać programy, które będą spełniały potrzeby i założenia ich środowiska.

Można więc powiedzieć, że programy tekstowe dostarczają funkcji, a programy graficzne ten funkcje implementują.

Jest jeszcze coś takiego jak biblioteki. Różnią się one od programów tekstowych głównie tym, że nie można ich używać bezpośrednio przez konsolę, czyli są nieinteraktywne. Ich funkcje można wykorzystać w trakcie pisania innego programu.

Otwieramy terminal

Przejdźmy wreszcie do rzeczy. Po pierwsze otwórz terminal. Jeśli pracujesz w środowisku GNOME lub KDE, zapewne znajdziesz odpowiednio terminal i konsolę w menu programów. Jeśli nie możesz sobie poradzić, wciśnij alt+F2 i wpisz o okienko xterm, rxvt, konsole lub gnome-terminal. Któreś z tych poleceń musi zadziałać. Uzycie konsole lub gnome-terminal jest o tyle dobre, że te programy historię poleceń i ich wyników.

Konsola otwarta? A więc zobaczmy co tam jest:

Po otwarciu konsoli zobaczysz wpis podobny do tego powyżej. Wyjaśnijmy sobie jego znaczenie:

Spróbujmy więc zmienić katalog i zobaczymy co się stanie:

Jak widać, zamiast {~} mamy w tej chwili {~/Obrazki}. Ale co oznacza ~/ ? Katalog domowy użytkownika, czyli w tym wypadku /home/mk. Możemy się o tym łatwo przekonać, przechodząc do niego i wyświetlając z niego pliki:

Pozwólcie, że podaruję już sobie kolorowanie składni w następnych przykładach:

Jak widać efekt ten sam, ~/ to zdecydowanie katalog domowy zalogowanego użytkownika.

Proste, prawda? Ale nieciekawe zarazem, więc przejdźmy do czegoś bardziej użytecznego, czyli logowania na administratora:

Jak widać, bieżącym katalogiem roota jest dalej katalog użytkownika, czyli {/home/mk}. Wpisz w konsolę exit lub użyj skrótu ctrl+D i zaloguj się tak:

Tym sposobem odczytane zostały ustawienia basha użytkownika root, w nich znajduje się między innymi domyślny bieżący katalog (w tym przypadku jest to katalog /root).

Uruchamiamy programy

Pracujesz w środowisku graficznym? Jak nazywa się Twój menedżer plików? Konqueror? Nautilus? A może Thunar? Spróbuj uruchomić go z konsoli:

Jak widać uruchomił się menedżer plików. Możesz zrobić to samo z konta roota, aby edytować pliki, do których nie masz dostępu jako użytkownik.

Praca na Linuksie zmusza nas czasami do wykonania pewnych czynności, których nie możemy wykonać jako zwykły użytkownik. Należą do nich wszelkie modyfikacje plików umieszczonych poza katalogiem domowym użytkownika. Wszakże poza nim nie mamy prawa do zapisu! Gorzej, jeśli akurat instalujemy komercyjny sterownik do karty graficznej, nie mamy dostępu do X serwera, a musimy na przykład odczytać z loga czemu sterownik nie chce działać, wykonać kopię konfiguracji iksów lub ją edytować. Warto w tym przypadku znać podstawowe polecenia:

edycja pliku:

czytanie pliku:

utworzenie pustego pliku:

nadanie atrybutu wykonywalności dla pliku:

wykonanie programu (nawet takiego bez atrybutu wykonywalności):

usunięcie pliku:

utworzenie katalogu:

Wykorzystanie środowiska KDE do wygodnej pracy w konsoli

Przypuśćmy, że ściągnąłeś duży plik z Internetu, który jest podzielony na kilka części. Części nazywają się np. plik.aa, plik.ab, plik.ac, plik.ad. Teraz trzeba je jakoś połączyć w całość. W Windows musiałbyś ściągnąć jakiś dziwny program. Tutaj wystarczy polecenie cat (tak, czytanie pliku). Zobaczmy jakim cudem polecenie odczytania pliku może połączyć kilka plików w jeden:

Jak widać jest to banalne. Wydajesz polecenie odczytania po kolei plików plik.aa plik.ab plik.ac plik.ad. Zamiast jednak wyświetlić je w konsoli, przekierowujesz strumień do pliku > plik.

Ale miało być o KDE. Należy zauważyć, że przepisanie powyższego polecenia nie spowoduje połączenia żadnych plików. Musimy wszak wejść do katalogu, w którym znajdują się te pliki:

Można jeszcze inaczej

Zobacz ile to wpisywania. Można się przy tym na dodatek kilka razy pomylić i doprowadzić do niespodziewanych rezultatów. W KDE jest prościej. Wchodzisz Konquerorem do tego katalogu:

katalog /home/mk/Downloads/plik w Konquerorze

Wciskasz F4, otwiera się konsola (w bieżącym katalogu). Piszesz cat [spacja]. Zaznaczasz w Konquerorze odpowiednie pliki do połączenia

zaznaczanie plików

Przeciągasz je na konsolę, wybierając opcję Wklej

przeciąganie na konsolę

Konquerora nie interesuje, że konsola została otwarta w bieżącym katalogu, przekierowuje on całe ścieżki dostępowe dla plików, stosując cudzysłowy. Ponieważ jednak konsola została otwarta w bieżącym katalogu nie musisz przejmować się o te ścieżki i do tekstu wklejonego przez Konquerora dopisujesz [spacja] > plik

Konqueror oferuje także wbudowaną w okno konsolę, która podąża za użytkownikiem:

konsola w oknie konquerora

Ułatwianie sobie pracy w trybie tekstowym

Nieraz użytkownicy Linuksa przechwalają się, że w konsoli są w stanie zrobić coś szybciej, niż w trybie graficznym. Mają rację? Zobaczmy.

Przede wszystkim ścieżki dostępu

Czy naprawdę myślisz, że powyższy przykład łączenia plików

napisałem ręcznie? Nic bardziej mylnego. Po prostu otworzyłem konsolę, wpisałem cat [spacja], następnie /h i wcisnąłem na klawiaturze przycisk TAB. Konsola automatycznie dopełniła ścieżkę do /home/. Następnie napisałem m i znowu TAB. Ścieżka dostępu wyglądała w tym momencie już tak: /home/mk/. Kolejno chciałem przejść przez katalog Downloads (oj, trudna nazwa), więc wpisałem D, TAB... chmm, nie działa, jeszcze raz i... oj, a co to?

Niestety, na literkę D w moim katalogu domowym można znaleźć więcej plików, zostały one wylistowane przez TAB. I bardzo dobrze, wiem czego się trzymać.

Gdy już miałem wpisane cat /home/mk/Downloads/plik/plik.a, skopiowałem sobie to do schowka. A schowek w Linuksie jest bardzo łatwy w użyciu - wystarczy zaznaczyć tekst lewym przyciskiem myszy i już go można wklejać środkowym. Dalszego ciągu można się już łatwo domyślić.

Historia poleceń

Bardzo dużym udogodnieniem jest łatwo dostępna historia wpisywanych poleceń, pod strzałkami w górę i w dół. Odczytywana jest z pliku ~/.bash_history.

Popularne czynności

Oprócz znanych Ci programów środowiska graficznego, które można uruchmiać z terminala, istnieją jeszcze bardzo przydatne polecenia tekstowe.

halt, reboot, hibernate - to odpowiednio wyłączenie systemu, ponowne uruchomienie systemu i hibernacja. Ta ostatnia może nie działać z wszystkimi systemami, warto zapytać dystrybutora. Powyższe polecenia prawie zawsze muszą być wykonane przez administratora.

Potoki - funkcja nieobecna w Windows, pozwala na połączenie dwóch poleceń. Przykładowo wpisując cat /etc/X11/xorg.conf, wyświetlisz zawartość tego pliku w konsoli. Jest to plik konfiguracyjny X serwera, zwykle dosyć obszerny i dlatego przewinie się poza ekran. Możemy więc cat połączyć w potok z less lub more i tym samym otrzymać możliwość łatwego przewijania tego pliku: cat /etc/X11/xorg.conf |more. Kolejny przykład, smartctl --help wyświetla bardzo wiele możliwości, a Ty jesteś ciekawy tylko opcji dla trybu DMA, wpisujesz więc smartctl --help |grep DMA. Tak grep, jak less i more to osobne programy, z których można korzystać niezależnie od innych programów. Grep jest bardzo przydatny do pracy z manualami, czyli pomocą uzyskiwaną za pomocą polecenia man program.

Nie wszyscy wiedzą, że pliki konfiguracyjne, takie jak fstab, także posiadają swoją pomoc w formacie man.

top - jest to program niezwykle przydatny do zarządzania procesami. Przykładowy problem: system zwolnił lub na jakimś aplecie superkaramby obserwujesz użycie procesora w 100%. Uruchamiasz więc top:

Jak widać, AP.EXE, czyli słownik angielsko-polski uruchomiony pod wine pewnie się zawiesił. PID czyli identyfikator procesu to 4664. Znając tę informację możemy użyć np. polecenia kill -9 PID. Szczegółowe informacje na temat tego przełącznika znajdują się w manualu. Zamiast używać kill możesz w topie wcisnąć K i wpisać numer feralnego procesu. Jeśli nie chce Ci się szukać PID-u, a wiesz który program Ci przeszkadza, możesz użyć polecenia killall nazwa pliku binarnego, czyli np. killall soffice.bin dla OpenOffice. Użycie killall może się wiązać z nieprzewidywalnymi rezultatami, na przykład "zabicie" Nautilusa pod GNOME spowoduje zniknięcie ikonek z pulpitu, ponieważ są one wyświetlane w ramach procesu Nautilusa.

Demony - wyobraź sobie sytuację, w której chcesz zrestartować połączenie z Internetem. Albo uruchomić menedżera logowania, bo na przykład musiałeś go wyłączyć w celu instalacji binarnych sterowników Nvidii. W systemach opartych o skrypty startowe BSD (Slackware, Arch) musisz z katalogu /etc/rc.d/ wybrać odpowiedni plik, który odpowiada za uruchamianie żądanej usługi przy starcie systemu. Dla przedstawionych powyżej przypadków będą to odpowiednio rc.inet i rc.4. Pełne polecenie może wyglądać tak /etc/rc.d/rc.inet restart. Zamiast restart można napisać start lub stop. W innych systemach skrypty startowe są rozrzucone po większej ilości katalogów, więc tam zwykle należy użyć narzędzia dedykowanego dla dystrybucji, w Mandrivie na przykład jest to service nazwa demona (np. gdm) start|stop|restart.