Laboratorium 1: Wprowadzenie do Linuksa

Pierwsze kroki z Linuksem

  • logowanie następuje do środowiska zwanego KDE lub Gnome (jest jeszcze kilka, np. XFCE ... )
  • przeglądarka (firefox, opera, konqueror, itp) -- Klikasz i masz,
    Otworzyć niniejsze materiały
  • terminal (konsola),

    Okienko z powłoką (shell): służy do wykonywania poleceń użytkownika
    prompt$ polecenie [ENTER]
  • mc Twoim przyjacielem
    (chodzenie po katalogach ENTER, wyświetlanie pliku F4, zaznaczanie plików INSERT, oraz [KP -], [KP +], [KP *],
    następnie F5 F6 F8 itp)
  • / zamiast \
  • Polecenia (niektóre):
    • ls - list - czyli wyświetl pliki w katalogu,

       
                  ls /usr/
                  ls -l
                  ls -a
                  ls -al /usr/
                  ls -R
       
    • cd - change directory - zmień katalog
      Pojęcia katalogu bieżącego oraz ścieżek względnych i bezwzględnych.

       
                  cd /usr/
                  cd -
       
    • pwd - print working directory - pokaż bieżący katalog (gdybyśmy się zgubili :-)
    • cp co? gdzie? - copy - kopiuj

       
      	    cp ala ula
      	    cp ala ola ula archiwum
                  cp -a
       
    • mv co? gdzie? - move - zmiana nazw bądź przeniesienie plików i katalogów do innego katalogu.

       
      	    mv ala ula
      	    mv ala ola ula archiwum
       
    • rm - remove - usuń plik/katalog

       
                  rm -r
                  rm -f
                  rm -i
                  rm -rf [OSTROŻNIE!!!!]
       
    • mkdir - make directory - utwórz katalog

       
                  mkdir ~/podkatalog
                  mkdir -p ~/glowny/podglowny/malutki
       
    • rmdir - remove directory - usuń katalog (tylko jeśli niepusty -- bezpieczniejsze od rm -r)

       
                  rmdir ~/podkatalog
       
    • passwd -- zmień hasło [hasło powinno być łatwe do zapamiętania i trudne do zgadnięcia]

Edytory

  • mcedit - prosty, wbudowany w mc,
    wyjście F10, lub kliknąć w 10
  • joe - w stylu edytorów Borlanda,
    wyjście ^KX
  • pico, nano - proste, tekstowe,
    wyjście ^X\
  • gedit, kate - okienkowe
  • vi - jest wszędzie, tekstowy, początkowo nieintuicyjny, skomplikowany, po dokładnym poznaniu efektywny,
    wyjście ESC :q! (to nie żart!)
  • emacs - rozbudowany, początkowo skomplikowany, po bliższym poznaniu efektywny,
    bardzo elastyczny, konfigurowalny na bardzo wiele sposobów,
    wyjście ^X^C

System plików

  • Nazwy katalogów:
    • / zamiast \
    • / (katalog głowny)
    • . (katalog bieżący)
    • .. (katalog nadrzędny)
    • ~ (nasz katalog domowy)
    • ~henio (katalog domowy użytkownika henio)
  • W Linuxie/Unixie nie ma C:\, jest jedno drzewo plików.
    Urządzenia (fizyczne i logiczne: np. przez sieć) są montowane (mount) w systemie plików i
    tworzą jedną strukturę katalogów.
  • Używanie * i ?
    ?b*a*.txt - oznacza wszystkie pliki, które mają w nazwie pierwszą literę dowolną, potem mają b,
    potem cokolwiek (w dowolnej liczbie), potem a, potem cokolwiek i kończą się na .txt.
    Inne znaczenie, niż w Windowsach:

     
    	ls
    	  ala.c ula.c ela.pas progs.pas
     
    	cp *.c *.pas  =  cp ala.c ula.c ela.pas  progs.pas
     
  • ln dokąd? skąd? - link - dowiązanie i częściej używane dowiązanie symboliczne
    (składnia jak cp)

     
    	ln plik1.ocaml plik1.ml
            ln -s docs Dokumenty
     
  • mount - pokazuje co gdzie jest zamontowane.
    Służy też do montowania, ale montować może (w zasadzie) tylko root (czyli administrator).
  • df - pokazuje miejsce na dyskach.
  • du - zajmowane miejsce (przez plik/katalog)

     
    	du ala.avi
    	du -s 
    	du -s *
     
  • quota - moje limity na przestrzeń dyskową (twarde i miękkie limity).
  • We wprowadzaniu nazw plików i katalogów mozemy sobie pomagac klawiszem [TAB], możemy też używać symboli .. ~

E-mail

  • pine / mutt -- używanie poczty w konsoli
    UWAGA! Jak się spróbuje napisać wiadomość w mutt-cie odpali się edytor vi!
    Aby coś napisać trzeba nacisnąć "i", a jak sie skończy to ESC ZZ (dwa duze Z).
  • Pliki .forward

Prawa dostępu

  • Trzy poziomy:

    • właściciel (User),
    • grupa (Group),
    • pozostali (Others)

    Poziomy te będziemy dalej oznaczali literkami u, g, o oraz a (All).

  • Każdy plik i katalog ma swojego właściciela i "grupę".
    Użytkownicy mogą należeć do wielu grup, ale pliki mają tylko jedną grupę.
  • Prawa dostępu
    prawa dostępu pokazuje ls -l

    • r - read - prawo do odczytu ,
    • w - write - prawo do zapisu / modyfikacji,
    • x - execute - prawo do uruchamiania pliku (lub dostępu do katalogu).
  • chmod - change mode - zmiana praw dostępu.
    Zmianę praw można określić kombinacją znaków postaci: poziom +/- prawa, np.:

     
    	chmod u+rwx *
    	chmod o-r *.c
    	chmod ug+rx Pliki
     
  • chown - change owner - zmień właściciela
  • chgrp - change group - zmień grupę
  • Ćwiczenie: spróbować zapisać plik:
    • u kolegi, w / (powinno się nie dać!)
    • w /tmp (powinno się dać),
    • pozwolić NA CHWILĘ! kolegom na dostęp do jakiegoś swojego podkatalogu.

Przekierowania wejścia/wyjścia

  • ls -l > plik - wyjście do pliku,
  • ls -l / >> plik - wyjście doklejone na końcu pliku,
  • ( echo "To jest katalog"; ls -l ) > plik - wyjscie z kilku komend do pliku - plik na początku wyzerowany,
  • P1 | P2 | ... | Pn - przetwarzanie potokowe,
  • P1 `P2` - wyjście P2 staje się częścią polecenia P1 (zwykle chodzi o listy plików).
  • cat - wyświetla zawartość plików (wbrew pozorom nie katalogów!)

     
            cat .bashrc
            cat > ~/plik
            cat plik1 plik2 > plik
     

    Przydatny przy przetwarzaniu potokowym.

  • less plik - lepszy do oglądania plików,
  • sort - sortuje zadany plik lub standardowe wejście
    uniq - usuwa powtórzenia (serie),

     
    	sort plik > plik.posortowany
    	cat plik | sort | uniq > plik.bez.powtórzeń
     
  • grep - wypisuje linie zawierajace zadany napis

     
    	grep main *.c
    	cat *.c | grep main
    	ls -l | grep drwx
    	cat *.c | grep main | sort | uniq > mains.txt
    	grep drwx `cat lista.plikow`
     

Procesy

  • Lista procesów:

     
            ps
            ps u
    	ps aux
     
  • top - najwięksi pożeracze zasobów,
  • kill - zabicie (lub wysłanie sygnału do) procesu,

     
    	kill 1234
    	kill -9 1234
    	kill -HUP 1234
     
  • killall - zabicie (lub wysłanie sygnału do) wszystkich procesów wykonujących dany program,

     
    	kill screen
    	kill -9 firefox-bin
     
  • pstree - drzewo procesów
  • Uruchamianie w tle
    Polecenie zakończone & - uruchamia się w tle, tzn. nie czekamy na jego zakończenie.
    Przydatne dla wszelkich programów "okienkowch".
    Jak się zapomni & - terminal jest zablokowany (czeka, aż program się skończy), ale można zrobić:

    • Ctrl-Z - zawiesi (suspend) proces,
    • bg - background - uruchomi w tle (odczepi do terminala) zawieszony proces,
    • fg - foreground - uruchomi na pierwszym planie (można też jednak zawiesić terminal jak się chce),
    • jobs - wypisze procesy przypięte do terminala,
    • kill %1 - poprzez % (procent) można łatwiej wybrać procesy przypięte do terminala,
    • Ctrl-C - przerywa działanie procesu pierwszoplanowego.

Zmienne i skrypty

  • Zmienne i ich użycie w poleceniach:
    • zmienne to stringi
    • x="ala ma kota" - przypisanie
    • echo $x w paski - odwołanie się do wartości
    • x=$[y * 2 + z] - wyrażenia arytmetyczne
    • echo $HOME $USER $MAIL $PATH - różne ciekawe zmienne.
  • Skrypt = plik tekstowy z poleceniami, któremu nadamy prawo do wykonywania.
    Dobry zwyczaj: pierwszy wiersz skryptu powinien wyglądać tak:

     
    	#!/bin/bash
     

    Określa on jaki program ma interpretować polecenia.
    Przydatne, jeśli chcemy napisać skrypt w języku dla jakiegoś innego interpretera:

     
    	#!/usr/bin/ocaml
    	#!/usr/bin/perl
     

Więcej na ten temat

Pierwszy kontakt z OCamlem

  • Uruchomienie interpretera:
     
    	ocaml
    	2+3;;
    	^D
     

    (nie działają strzałki itp.)

     
    	ledit ocaml
     

    (działają strzałki!!!)

  • Parę przykładów funkcji:

     
    	let f x = x*x;;
     
    	let ma co = "Ala ma "^co;;
    	ma "kota";;
     
    	f "kota";;
    	(error)
     
    	let g x = (f x)^(f x);;
    	(error)
     
    	let h x = f (f x);;
     
    	h 7;;
    	h (f 7);;
     
    	max_int;;
    	max_int+1;;
     
    	let rec silnia n = if n=0 then 1 else n*(silnia (n-1));;
     
    	let rec powtorz n s = if n=0 then "" else s^(powtorz (n-1) s);;
     
    	let powt3 = powtorz 3;;
     
    	let powt_ala n = powtorz n "ala";;
     
  • Wczytanie kodu z pliku:

     
    	#use "plik.ml";;