SystemyOperacyjne.docx

(24 KB) Pobierz

Uruchamiając terminal, rozpoczynamy pracę w konkretnym katalogu. Zazwyczaj jest to katalog główny danego użytkownika. W trakcie pracy możemy wielokrotnie zmieniać katalog, w którym chcemy pracować. Katalog, "w którym aktualnie jesteśmy", nazywamy katalogiem bieżącym. Do sprawdzenia, co jest w danym momencie, używamy komendy pwd.

Katalog bieżący zmieniamy, stosując polecenie cd:
cd nazwa_katalogu_docelowego

Określając nazwę katalogu docelowego, możemy stosować ścieżkę bezwzględną lub względną. Ścieżka bezwzględna wskazuje dokładną lokalizację pliku lub katalogu. Ścieżka ta rozpoczyna się od katalogu głównego "/". Przykład wykorzystania ścieżki bezwzględnej:
cd /home/FS2007/

Scieżka względna określa położenie docelowego katalogu lub pliku względem katalogu bieżącego. Przykłady użycia ścieżki względnej:
cd ../FS2007/tmp/   (przechodzimy do katalogu tmp, który znajduje się w katalogu FS2007, który z kolei znajduje się w katalogu nadrzędnym w 
stosunku do katalogu bieżącego.)

cd ./abc/cde/
lub
cd abc/cde/ (przechodzimy do katalogu cde, który jest podkatalogiem katalogu abc, który z kolei jest podkatalogiem katalogu bieżącego)

Do wyświetlania informacji o plikach i katalogach znajdujących się w katalogu bieżącym (lub w innych katalogach) służy polecenie
ls

Jego ważna opcja to -l
ls -l

Po wykonaniu powyższej komendy na ekranie zobaczymy szczegółowe dane o zasobach zamieszczonych w danym katalogu. Pierwszy znak pierwszej kolumny określa, czy dany element jest plikiem (-) lub katalogiem (d). Pozostałe znaki pierwszej kolumny zawierają informacje o atrybutach, czyli prawach dostępu. Prawa dostępu mówią o tym, co właściciel danego elementu (znaki 2-4), inni użytkownicy należący do tej samej grupy użytkowników co właściciel (znaki 5-7), oraz wszyscy pozostali użytkownicy (znaki 8-10), mogą zrobić z danym elementem. W danej trójce znaków pierwszy oznacza prawo do odczytu (r) lub jego brak (-), drugi znak oznacza prawo do zapisu, czyli do zmieniania danego elementu (w) lub jego brak, trzeci znak oznacza prawo "do wykonywania", czyli np. uruchamiania pliku będącego programem, (x), lub jego brak (-). Właściciel może zmieniać atrybuty komendą chmod.
Niekiedy interesują nas tylko niektóre spośród plików z danego katalogu. Na przykład, chcemy wyświetlić listę tych plików, których nazwy rozpoczynają się literą a:
ls a*  - gwiazdka reprezentuje dowolny ciąg znaków (również ciąg pusty - o zerowej długości).
Inny przykład - interesują nas tylko pliki z rozszerzeniem txt:
ls *.txt
Chcemy wyświetlić listę plików, których drugim znakiem w nazwie jest litera a, b lub c:
ls ?[abc]* - znak zapytania reprezentuje jeden dowolny znak (w naszym przykładzie pierwszy znak nazwy może być jakikolwiek), nawias [ ] zawiera listę znaków, spośród których jeden ma się pojawić na drugim miejscu w nazwie. Ponieważ są to znaki, które występują kolejno w alfabecie, można było w nawiasie podać przedział interesujących nas znaków:
ls ?[a-c]*
Chcemy wyświetlić listę plikówz rozszerzeniem txt, których nazwy rozpoczynają się cyfrą od 1 do 5, lub 7 lub 9:
ls [1-579]*.txt


Kopiowanie i przenoszenie plików
cp plik_zrodlowy plik_docelowy - kopiowanie
mv plik_zrodlowy plik_docelowy - przenoszenie, ewentualnie zmiana nazwy - jeśli plik źródłowy i docelowy są w tym samym katalogu.

Podając nazwy plików źródłowych i docelowych, korzysta się ze ścieżek bezwzględnych lub względnych.

Przekierowanie wyjścia
Standardowym wyjściem wielu komend jest ekran, np. po wpisaniu komendy ls listę plików zobaczymy właśnie na ekranie. Informacje "wychodzące" możemy przekierować np. do pliku albo do systemowego kosza. Robimy to stosując symbol przekierowania >
ls > plik
Informacje zostaną zapisane w pliku o nazwie plik. Jeśli taki plik już istniał, "stara" zawartość zostanie skasowana.

ls -l >> plik
Jeśli plik już istniał, "stara" zawartość nie zostanie skasowana, a nowe dane zostaną dopisane na końcu pliku.

Domyślnie przekazywane są informacje z kanału danych. Jest jeszcze kanał informacji o błędach
ls -l plik.txt 1> dane 2> bledy
ls -l plik.txt - generuje linię ze szczegółowymi informacjami na temat pliku plik.txt. Informacje te (kanał danych - nr 1) zostaną zapisane w pliku o nazwie dane. Ewentualne informacje o błędach, które miały miejsce w trakcie wykonania instrukcji ls -l plik.txt (przykładowo - plik.txt może nie istnieć), a zatem informacje z kanału błędów (nr 2), zostaną zapisane w pliku bledy.

Polecenie cat
służy między innymi do wypisania zawartości pliku do standardowego wyjścia.
cat plik.txt - plik zostanie wyświetlony na ekranie
cat plik.txt >> plik1.txt - zawartość pliku plik.txt zostanie dopisana do pliku plik1.txt.

Polecenie grep
służy między innymi do wyszukania w danych pochodzących np. z wyświetlenia pliku lub z polecenia ls linii, zawierających (lub nie) pewnien wzorzec
grep "informatyka" plik.txt - wypisze tylko te linie z pliku plik.txt, które zawierają słowo informatyka
grep -v "informatyka" plik.txt - wypisze tylko te linie z pliku plik.txt, które nie zawierają słowa informatyka
grep ^d plik.txt - wypisze tylko te linie z pliku plik.txt, które  zaczynają się znakiem d
grep d$ plik.txt - wypisze tylko te linie z pliku plik.txt, które kończą się znakiem d

Potoki
"wyjście" z jednego polecenia, może byc od razu użyte jako "wejście" do kolejnego polecenia
ls -l | grep ^d - spośród linii generowanych przez polecenie ls -l, wybrane zostają tylko te, które rozpoczynają się znakiem d
cat plik.txt | grep "informatyk" - por. informacje o poleceniach cat i grep

aliasy
Możemy stworzyć własne polecenia, które będą na przykład skrótami poleceń lub ciągów poleceń.
alias ls1="ls -ltr"
zdefiniowaliśmy nową instrukcję, której efekty są takie same jak ls -ltr. W aliasach można stosować potoki:
alias ins1="ls -l | grep ^d"
aliasy działają do momentu wylogowania się, lub do momentu anulowania instrukcją unalias
unalias ins1


Polecenie wc
Podaje informację na temat wielkości na przykład pliku.
wc -l plik.txt
wynikiem będzie liczba wierszy zawartych w pliku  plik.txt
ls -l | grep ^d | wc -l
wynikiem będzie liczba wierszy generowanych poleceniem ls -l | grep ^d

Polecenie cut
Załóżmy, że mamy plik 1.txt z zawartością
abx
cby
Zawartość tę można rozumieć jako dwa wiersze z dwiema kolumnami, rozdzielonymi literą b. 
cat 1.txt | cut -db -f1
Na ekranie wyświetli się tylko pierwsza kolumna. -db oznacza, że jako separator wybrany jest znak b, -f1 oznacza, że chcemy wyświetlić tylko kolumnę nr 1. Plik wejściowy pozostanie nie zmieniony.
Plik 2.txt ma zawartość 
qwe rty uio p[]
ad fh jl ;'
cat 2.txt | cut "-d " -f3-4
Jako separator wybraliśmy spację, chcemy zobaczyć kolumny od 3 do 4. Wynikiem będzie
uio p[]
jl ;'
Wynik możemy przekierować do nowego pliku:
cat 2.txt | cut "-d " -f3-4 > 2_new.txt

Polecenie tr
Załóżmy, że mamy plik zam.txt z zawartością
abc def xyz 
def ijk mno
cat zam.txt | tr e q
Na ekranie zamiast e pojawi się q.
cat zam.txt | tr e " "
Na ekranie zamiast e pojawi się spacja.
cat zam.txt | tr def cvb
Na ekranie zamiast def pojawi się cvb.
cat zam.txt | tr [def] t
Każda z liter d, e, bądź f zmieni się w t.
cat plik | tr . ,
Przydatne np. w plikach z liczbami, aby zmienić separator części dziesiętnej z kropki na przecinek.
cat zam.txt | tr def cvb > zam1.txt
Zapisanie wyniku nie na ekranie, a w nowym pliku.

Instrukcja for - tworzenie pętli
for {zmienna sterująca} in {lista} ; do {instrukcja}; done
Przykład
for i in a b; do echo x; done
dwa razy wypisany zostanie "x" - dla każdej z dwóch wartości (a i b) zmiennej sterującej i.
for i in a b; do echo $i; done
wypisanie wartości zmiennej sterującej w kolejnych krokach (znak $ oznacza, że chodzi o wartość)
for i in 1 10; do echo $i; done
działa podobnie, jak powyżej
for i in `seq 1 10`; do echo $i; done
` ` - w tych apostrofach umieszczamy instrukcje, służące wygenerowaniu złożonej listy wartości zmiennej sterującej. Polecenie seq 1 10 oznacza generowanie kolejnych wartości od 1 do 10.
wyn=0; for i in `seq 1 10`; do wyn=$((${wyn}+${i})); done ; echo $wyn
Stworzyliśmy zmienną wyn i nadaliśmy jej wartość 0. W każdym kroku pętli wartość wyn zmieniamy w tej sposób, że do aktualnej warości wyn dodajemy aktualną wartość zmiennej sterującej i. Na końcu wyświetlamy ostateczną wartość wyn, która w tym przypadku jest sumą liczb od 1 do 10. Podwójne nawiasy (( )) zawierają wyrażenie arytmetyczne. wyn=$(( )) oznacza, że wyn przyjmuje wartość wyrażenia zawartego w nawiasach. 
Zamiast (( )) można użyć [ ]
wyn=0; for i in `seq 1 10`; do wyn=$[${wyn}+${i}]; done ; echo $wyn
Poniżej nieco inne użycie tej instrukcji (bez określenia, że chodzi o wartość wyrażenia arytmetycznego)
wyn=0; for i in `seq 1 10`; do wyn=${wyn}+${i}; done ; echo $wyn
Lista może być wynikiem jeszcze innych instrukcji, np.
for i in `ls | grep ^a` ; do cp ${i} ${i}_back ; done
Wszystkie pliki rozpoczynające się literą a zostaną skopiowane, kopie będą miały nazwy takie jak oryginały, ale dostawiona zostanie końcówka _back.

W trakcie pracy system wykorzystuje tzw. zmienne środowiskowe. Wartości tych zmiennych wpływają na sposób działania wykorzystywanych programów czy poleceń. W celu wyświetlenia wszystkich używanych zmiennych środowiskowych (i ich wartości), stosujemy polecenie
env
Na przykład zmienna USER przechowuje nazwę użytkownika. Wartość zmiennej sprawdzamy następująco
echo $USER
Oprócz zmiennych środowiskowych istnieją zmienne powłokowe. Własne zmienne tworzymy następująco
zmienna=wartosc
Jeżeli dodatkowo użyjemy polecenia export, utworzymy zmienną w sposób bardziej ogólny z punktu widzenia działania powłoki (np. nowa zmienna 
będzie "widziana" przy użyciu polecenia env)
export zmienna2=wartosc...

Zgłoś jeśli naruszono regulamin