niedziela, 7 sierpnia 2005

Podstawy obsługi konsoli UNIX-Linux

Podstawy obsługi konsoli systemów UNIX-Linux


Podstawy obsługi konsoli systemów UNIX/Linux to czasem pewna trudność dla początkujących użytkowników (administratorów, hackerów). Trochę wiedzy z laboratorium podstaw informatyki nigdy nie zaszkodzi, a wielu może ułatwić pierwsze kroki z konsolą UNIX Linux.  

Zaznajomienie z podstawami obsługi konsoli systemów operacyjnych UNIX Linux to dobry materiał zarówno dla studentów informatyki jak i dla hobbystów pragnących poznać sposoby pracy w powłoce. Artykuł zawiera niewielkie wprowadzenie na poziomie dla studenta pierwszego semestru informatyki. 

Ważne cechy charakterystyczne konsoli UX Lx

1. Unix/Linux rozróżnia wielkie i małe litery.

2. Kilka oznaczeń:

‘.’ oznacza katalog bieżący,

’..’ oznacza katalog nadrzędny,

’/’ oznacza katalog główny, „cd /” przejście do katalogu głównego

’~’ oznacza katalog domowy, cd ~

’~/praca’ oznacza plik ‘praca’ w domowym katalogu zalogowanego użytkownika

’~user/praca’ oznacza plik ‘praca’ w domowym katalogu użytkownika ‘user’

’/home/std/praca’ ścieżka bezwzględna

’std/praca’ ścieżka względna

3. Opcje poleceń można łączyć, zamiast ‘ls -l -a’ można zapisać ‘ls -la’.

4. Nazwa pliku rozpoczynająca się od kropki (np. ‘.plik’) oznacza, że plik ten jest ukryty.


Uzyskiwanie pomocy


man nazwa_polecenia - Wyświetla szczegółowy opis (ang. manual) polecenia. Po wyświetlanej stronie można się przemieszczać za pomocą strzałek i klawiszy Enter, Space=PageDown, PageUp. Wyjście z podręcznika następuje po naciśnięciu „q”.

info nazwa_polecenia, pinfo nazwa_polecenia – Są to polecenia alternatywne do man.

nazwa_polecenia -h lub --help – Jedną z opcji każdego polecenia jest opcja --help, umożliwiająca wyświetlanie pomocy kontekstowej.

whatis nazwa_polecenia – Polecenie dostarcza krótkiej informacji na temat polecenia, na podstawie własnej bazy nazw poleceń. Whatis przeszukuje bazę uwzględniając nazwę polecenia, która musi być identyczna z podanym tekstem.

apropos nazwa_polecenia – jak wyżej z różnicą taką, że przeszukiwane są także opisy poleceń. 


Podstawowe polecenia


cd – Zmiana bieżącego katalogu. Po zalogowaniu do systemu, katalogiem bieżącym jest katalog domowy użytkownika.

pwd – Wypisuje pełną nazwę bieżącego katalogu.

ls – Wyświetla listę plików w katalogu, jak również informacje o pliku. „ls -l” powoduje wyświetlenie szczegółowych informacji o plikach.

echo tekst – Wyświetlanie komunikatu na ekranie.

Tworzenie katalogów


mkdir nazwa_katalogu – Utworzenie katalogu.

Tworzenie plików


touch nazwa_pliku – Polecenie służy do tworzenia pustego pliku (za pomocą tego polecenia można również zmienić datę istniejącego pliku – pod warunkiem posiadania odpowiednich uprawnień)

>nazwa_pliku – Tworzenie nowego pliku za pomocą przekierowania wyjścia (pusty strumień przekierowujemy do pliku)

cat > nazwa_pliku - Za pomocą polecenia cat i strumieni możemy utworzyć nowy plik i od razu wypełnić do danymi. Koniec wpisywania danych następuje po wciśnięciu Ctrl+D. 

linia tekstu

druga linia tekstu

^D

Usuwanie plików i katalogów 


rm nazwa_pliku – Usunięcie pliku.
rm -r katalog – Usunięcie katalogu i całej jego zawartości.
rmdir katalog – Usunięcie pustego katalogu.

Kopiowanie, przenoszenie


cp plik_zrodlowy plik_docelowy – Kopiowanie plików, np. „cp /home/guest/* . ” skopiuje wszystkie pliki z katalogu domowego użytkownika guest do katalogu bieżącego (.)

mv plik_zrodlowy plik_docelowy – Zmiana nazwy/przeniesienie plików, np.

„mv ~/doc/plik1 ~/doc/out.txt” zmieni nazwę pliku

„mv ~/doc/plik1 out.txt” nastąpi przeniesienie pliku (ze zmienioną nazwą) do katalogu bieżącego

Wyświetlanie zawartości pliku


cat nazwa_pliku – Wyświetlanie pliku na ekranie (zalecane dla małych plików).

cat nazwa_pliku nazwa_pliku2 – Wyświetlenie dwóch plików na ekranie.

more nazwa_pliku – Wyświetlanie pliku z możliwością nawigacji za pomocą spacji (w dół) i ‘b’ (w górę). Wyjście następuje po wciśnięciu ‘q’ lub wyświetleniu całej zawartości.

less nazwa_pliku – Wyświetla plik i umożliwia nawigację za pomocą strzałek, nie kończy pracy po osiągnięciu końca pliku.

head -n 5 nazwa_pliku - Wyświetla pierwsze linie pliku (tu: 5 pierwszych linii).

tail -n 3 nazwa_pliku – Wyświetla ostatnie linie pliku (tu: 3 ostatnie linie).

wc nazwa_pliku – Zlicza i wyświetla ilość linii, słów i bajtów w pliku (word count).

find – Wyszukiwanie plików po nazwie, po dacie utworzenia, itd.

cmp, diff – Porównywanie dwóch plików.

Znaki uogólniające


Aby jednym zapisem objąć więcej plików zastosowań należy znaki specjalne. Do znaków specjalnych zaliczyć można *, ?, [, ]. Znaki te wykorzystywać można w przypadku niektórych poleceń których argumentami są nazwy katalogów lub plików, np. cp, rm.

* - Gwiazdka zastępuje dowolny ciąg znaków (w tym ciąg pusty) z wyjątkiem plików, których nazwa rozpoczyna się od kropki. „*”.

? - Zastępuje dokładnie jeden znak w nazwie pliku, podobnie jak wyżej nie zastępuje kropki w roli pierwszego znaku w nazwie.

[A,B,C] lub [ABC] - W nazwie ma wystąpić któraś z wymienionych liter.

[a-z] - Oznacza dowolną małą literę.

[a-zA-Z0-9] - Oznacza jeden znak alfanumeryczny.

{kot,pies} - W nazwie ma wystąpić któryś z podanych ciągów literowych.

Przykład:

[123]*{txt,doc} oznacza wszystkie pliki, których nazwa zaczyna się od cyfr 1, 2 lub 3 i kończy się na txt lub doc.

Prawa dostępu


Każdy plik i katalog posiada 10 bitów protekcji (wyświetlane przy okazji polecenia ls-l), gdzie:

- Bit 1 umożliwia identyfikację rodzaju pliku („d” – katalog, „-” – plik, „l” – link do pliku, itd...),
- bity 2-4 opisują uprawnienia dla właściciela pliku,
- bity 5-7 opisują uprawnienia dla grupy do której należy właściciel,
- bity 8-10 odpowiadają prawom dla wszystkich pozostałych użytkowników.

Prawo odczytu (r) – umożliwia odczytanie zawartości pliku (w przypadku katalogu z takim prawem umożliwia odczytanie listy plików znajdujących się w tym katalogu).

Prawo zapisu (w) – pozwala na modyfikacje pliku. Dla katalogów oznacza możliwość tworzenia nowych i usuwania istniejących plików w tym katalogu.

Prawo wykonywania (x) – pozwala na uruchomienie pliku wykonywalnego, a w przypadku katalogu oznacza prawo dostępu do plików wewnątrz katalogu.

Przykład:

-rwxrw----- Oznacza pełne prawa dla właściciela pliku, odczyt i zapis/modyfikację dla grupy właściciela pliku, pozostali użytkownicy nie posiadają żadnych praw do tego pliku.

Administrowanie uprawnieniami


Prawa dostępu może modyfikować właściciel pliku lub administrator!

Polecenie chmod umożliwia zmianę praw dostępu do pliku bądź katalogu.

chmod podmiot operator prawa nazwa_pliku 

(pola podmiot, operator i prawa nie powinny być rozdzielane spacją)

podmiot: ‘u’ właściciel pliku, ‘g’ grupa właściciela, ‘o’ pozostali użytkownicy, ‘a’ wszyscy

operator: ‘+’ dodanie praw, ‘-‘ odebranie praw, ‘=’ przypisanie praw

prawa: ‘r’, ’w’, ’x’

Przykłady:

chmod g+x plik – nadanie grupie prawa do wykonywania (bez zmiany innych praw)

chmod ug=rwx,o=x plik – nadanie grupie i właścicielowi praw rwx, a innym użytkownikom tylko x

Wszystkie prawa można zapisać również w sposób numeryczny. Każde prawo na swoją wagę liczbową. Sumując poszczególne wagi otrzyma się sumaryczne prawo dostępu. Wagi: r=4, w=2, x=1.

Prawa w postaci liczbowej podaje się jako liczbę trzycyfrową. Pierwsza oznacza prawa dla właściciela, druga dla grupy, trzecia dla pozostałych. Zatem rwxrw---- można zapisać jako 760. Wówczas nadanie takich praw dla pliku można wykonać wywołując polecenie chmod 760 plik .

chown – Umożliwia zmianę właściciela pliku.

chgrp – Umożliwia zmianę grupy, do której należy plik.

Dowiązania


ln źródło nazwa – Utworzenie dowiązania o nazwie „nazwa” do pliku/katalogu „źródło”

Dowiązania dzielimy na twarde (hard link) i miękkie, zwane też symbolicznymi (soft/symbolic).

Link twardy to nadanie innej nazwy istniejącemu plikowi. Każdy fizyczny plik posiada specjalne pole, przechowujące ilość twardych linków do danego pliku. Aby usunąć plik należy usunąć wszystkie twarde dowiązania. Podczas operacji usuwania twardego linku system operacyjny najpierw sprawdza wartość wspomnianego pola. Jeśli wartość ta większa jest od jedności, wówczas zmniejszana jest o 1 a z katalogu usuwany jest wpis linku twardego. Jeśli natomiast wartość ta równa jest jeden, wówczas dopiero usuwany jest fizyczny plik na dysku oraz odpowiadający mu wpis w katalogu. Twarde linki stosować można wyłącznie w obrębie jednego systemu plików.

Link symboliczny jest specjalnym typem pliku, który "wskazuje" na inny - oryginalny plik poprzez jego nazwę (podobny do skrótu i Windows’ach). W odróżnieniu od linków twardych, link symboliczny nie modyfikuje licznika dowiązań do pliku. Co więcej, link miękki można utworzyć nie tylko do pliku, lecz również do katalogu (co w przypadku linków twardych było niemożliwe) jak również do nieistniejącego obiektu.

Link symboliczny tworzy się w sposób analogiczny do twardego, dodając do polecenia ln opcję -s:

ln -s źródło nazwa

Uzyskiwanie informacji o użytkownikach


who – Wyświetla listę zalogowanych użytkowników.

last – Wyświetla datę i czas ostatniego logowania użytkowników.

w, finger – Pozostałe polecenia o podobnym działaniu.

Potokowanie strumienia danych


Zastosowanie znaku ‘|’ pozwala na łączenie wyjścia jednego polecenia z wejściem innego. Takie rozwiązanie pozwala np. na wygenerowanie zestawu danych za pomocą pierwszego polecenia, a następnie przetworzenie go przy użyciu kolejnego, np. ls –al | more –p

Przekierowanie strumienia danych do pliku


- Znak ‘<’ umożliwia pobranie z pliku danych i przetworzenia ich przez polecenie, np. more < plik
- Znak ‘>’ umożliwia przekierowanie strumienia danych do pliku; jeżeli plik istnieje, to jego zawartość zostaje usunięta.
- Znak ‘>>’ jak wyżej, z różnicą, że jeśli plik istnieje dane są dopisywane na koniec.

Procesowi przypisane są trzy strumienie danych:

- standardowe wejście, domyślnie jest to klawiatura i powłoka identyfikuje je jako plik 0
- standardowe wyjście, domyślnie jest to ekran i powłoka identyfikuje je jako plik 1
- standardowe wyjście błędów, domyślnie jest to ekran i powłoka identyfikuje je jako plik 2.

ls -y 1>plik1.txt 2>plik2.txt do plik1.txt trafi rezultat polecenia, a do plik2.txt ewentualne błędy

Procesy


Unix/Linux jest wielozadaniowym systemem operacyjnym. Oznacza to, że korzystając z systemu mamy wrażenie, że wiele programów działa jednocześnie. Działający w danej chwili program nazywany jest procesem. Każdemu procesowi przypisany jest jednoznaczny numer zwany identyfikatorem procesu, lub PID. Proces może być wykonywany jako pierwszoplanowy (wówczas zajmuje on standardowe wejście i wyjście, czyli monitor i klawiaturę) lub jako proces tła (wówczas „nie widać” jego działania a procesem pierwszoplanowym jest inny proces). Na ogół proces uruchamiany jest z prawami użytkownika, który proces uruchomił. Rozpocząć wykonywanie procesu możemy na przykład poprzez wydanie dowolnej komendy.

jobs – Wyświetla procesy uśpione i procesy uruchomione w tle.

ps – Wyświetla wszystkie procesy (łącznie z pierwszoplanowymi), w zależności od użytych opcji wyświetla różne informacje o procesach.

kill – Służy do „zabijania” procesów. Jako zwykły użytkownik można zabić tylko te procesy, które samemu się uruchomiło (root może zabić każdy proces).

Ctrl+Z – Skrót służy do uśpienia procesu pierwszoplanowego. System zawiesza jego wykonywanie pozostawiając go w pamięci.

bg, fg – Polecenia służą do wznawiania uśpionych procesów. fg wznawia wykonywanie jako procesu pierwszoplanowego, bg jako procesu tła. Polecenie bez parametru odnosi się do procesu oznaczonego przez ‘+’ (polecenie jobs). Jeżeli chcemy wznowić wykonywanie innego procesu, jako parametr podajemy numer zadania poprzedzony znakiem ‘%’.

& - Umieszczenie tego znaku na końcu polecenia uruchamia proces od razu w tle. Np. ls –R &

Zadania do wykonania


Zadanie 1

• Zaloguj się do systemu i wyświetl bieżącą datę, sprawdź możliwości formatowania daty i czasu.

• Wyświetl listę zalogowanych użytkowników i szczegółowe informacje o jednym z nich.

Zadanie 2

Utwórz w katalogu domowym katalog lab2, a w nim source i target. W katalogu source utworzyć 17 pustych plików: plik0 ... plik9 oraz abc ... ghi.

• Znaleźć (używając jednokrotnego polecenia find) pliki plik3 ... plik8.

• Skopiować (jednym poleceniem) wszystkie pliki z katalogu source do katalogu target, w których nazwie występuje jedna z liter ‘b’,’h’ lub ‘i’.

Zadanie 3

Utworzyć w katalogu lab2 dwa pliki p1.txt i p2.txt z dowolnym tekstem. Zmień prawa dostępu w ten sposób, aby tylko właściciel miał prawo do zapisu i odczytu pliku p1.txt. Plik p2.txt powinien być możliwy do odczytania przez wszystkich, natomiast właściciel powinien mieć także prawo do zapisu danych w pliku.

Zadanie 4

• Utworzyć dowiązanie twarde do pliku p1.txt o nazwie d1.txt. Sprawdź zawartość obu plików i ich rozmiar. Zmień zawartość pliku p1.txt (lub d1.txt) i ponownie wyświetl zawartość obu plików (najlepiej jednym poleceniem). Usuń plik p1.txt i sprawdź co wskazuje teraz dowiązanie d1.txt.

• Utwórz dowiązanie symboliczne s2.txt do pliku p2.txt i postępuj analogicznie jak w punkcie poprzednim.

ZADANIA DODATKOWE


Zadanie 5

• Uruchom trzykrotnie polecenie cat w taki sposób, by umożliwiało tworzenie nowego pliku (dla kolejnych wywołań mają to być pliki o nazwach a1.txt, a2.txt, a3.txt). Po każdym uruchomieniu polecenia uśpij je za pomocą odpowiedniej sekwencji.
• Uruchomić polecenie ls bezpośrednio jako proces tła.
• Wyświetlić wszystkie uśpione procesy tła (poleceniem jobs).
• Przenieść jeden proces „cat” do postaci pierwszoplanowego i dokończyć tworzenie nowego pliku a?.txt.
• Wykorzystać polecenie PS do wyświetlenia procesów uruchomionych przez użytkownika.
• Za pomocą polecenia kill zabić procesy „ls” i 2x „cat”.

Zadanie 6

Wylistować wszystkie pliki z wszystkich katalogów systemu. Lista plików powinna być zapisana do pliku lista.txt, a ewentualne błędy do err.txt. Proces ten uruchomić bezpośrednio w tle i zaraz potem wykonać kilkakrotnie polecenie jobs. Zaobserwować wynik polecenia jobs.

Na podstawie "Podstawy informatyki", semestr I, laboratorium 2.

Skróty klawiszowe w konsoli Linuksa


Konsola Linuksa daje administratorowi (root) lub hackerowi niemalże niekończone możliwości. Wpisywanie długich poleceń może jednak być “upierdliwe” warto więc poznać drogę hakerskich skrótów do pracy na konsoli.

Podstawowe skróty i ułatwienia:

TAB – automatyczne dokończenie nazwy zaczętego polecenia.
TAB – wciśnięte dwa razy – w przypadku gdy powłoka nie jest w stanie dokończyć zaczętego polecenia powtórne wciśnięcie klawisza TAB spowoduje wyświetlenie podpowiedzi z listą dostępnych komend zaczynających się od wpisanej wartości.
(↑ | ↓) – strzałki góra / dół – Poruszanie się po historii poleceń, które wcześniej były już wpisywane w konsole,
CTRL+P / CTRL+N – tak samo jak w przypadku strzałek – poruszanie się po historii poleceń, które wcześniej były już wpisywane w konsole,
CTRL+R – wyszukuje w historii poleceń wcześniej już wykonanych, po wciśnięciu skrótu wpisujemy początkowy jakiejś komendy – i otrzymujemy podpowiedź
Ctrl+G – wychodzi z wyszukiwania historii poleceń
ALT+. – wkleja ostatnie słowo z poprzedniego polecenia
^słowo^zamiennik – zastępuje słowo zamiennikiem w poprzednim poleceniu
CTRL+C – przerwanie/zabicie działania programu
CTRL+Z – zatrzymanie działania programu
CTRL+S – zatrzymanie transferu do terminala
CTRL+Q – kontynuowanie transferu do terminala – (jeśli wcześniej użyto ctrl+s)
CTRL+L – wyczyszczenie ekranu (działa jak polecenie clear)
!! – wykonaj ostatnie polecenie
!wpis – wykonaj najczęściej wykonywane polecenie zaczynające się od wpis
!wpis:p – to samo co wyżej, tylko bez wykonywania (wyświetlenie pełnej nazwy komendy)

Skróty przeznaczone do edycji polecenia:

Ctrl+A – przesuwa kursor na początek linii
Ctrl+E – przesuwa kursor na koniec linii
Ctrl+K – usuwa wszystko od kursora do końca linii
Ctrl+U – usuwa wszystko od kursora do początku linii
Ctrl+W – usuwa słowo przed kursorem
Ctrl+Y – wkleja poprzednio wymazany fragment poprzez Ctl-U oraz Ctl-K,W
Ctrl+D – usuwa literę przed kursorem (lub słowo – również ALT+BackSpace)
Alt+B – cofa kursor o słowo do tyłu
Alt+F – przenosi kursor o słowo do przodu
Alt+T – zmienia kolejność wpisywanych słów
Alt+C – Zamienia pierwszą literę w wyrazie na Wielką, a kolejne na małe.
Alt+L – Zamienia wszystkie znaki w wyrazie na prawo od kursora na małe litery
Alt+U – Zamienia wszystkie znaki w wyrazie na prawo od kursora na Wielkie litery

Skróty okien: 

CTRL+ALT+F1 – Przełącza na pierwszy terminal.
CTRL+ALT+FN (N=1..6) – Przełącza na następne terminale.
tty – wyświetla nazwę bieżącego terminalu.
CTRL+ALT+F7 – Przełącza na pierwszy terminal graficzny (jest na tym terminalu uruchomiony jest X-window).
CTRL+ALT+FN (n=7..12) – Przełącza na następny terminal graficzny (jeśli terminal GUI jest uruchomiony na ekranie n-1).
SHIFT+PgUp – przewija dane wyjściowe z terminala w górę.
SHIFT+PgDown – przewija dane wyjściowe z terminala w dół.
CTRL+ALT+ESC – zabija okno w które klikniesz myszką
CTRL+ALT+BACKSPACE – zabija środowisko graficzne lub je restartuje. Warto skorzystać z tej kombinacji, kiedy wszystko inne przestało działać.

Inne skróty klawiszowe w konsoli: 

Alt-Ctrl-L Blokada komputera
Alt-F1 Otwiera menu Aplikacje (dalej można się po nim poruszać strzałkami)
Alt-F2 Otwiera menu ‘Uruchom’
Alt-F3 Otwiera menu wyszukiwania (Deskbar)
Alt-F4 Zamyka aktywne okno
Alt-F5 Pomniejsza okno (jeśli jest na pełnym ekranie)
Alt-F7 Pozwala na przesuwanie okna za pomocą strzałek
Alt-F8 Pozwala na zmianę rozmiaru okna za pomocą strzałek
Alt-F9 Minimalizuje aktywne okno
Alt-F10 Maksymalizuje aktywne okno

Zajrzyj znowu, gdyż od czasu do czasu artykuł bywa uzupełniany! 

1 komentarz: