Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Wybrane aspekty informatyki
Wojciech St. Mościbrodzki PIN PJWSTK, Wykład dla SNM Gdańsk, 2011
2
echo echo – wyświetlenie tekstu na standardowym wyjściu
$echo „Hello world” Hello world Każde polecenie ma zwykle dość rozbudowany help: man <polecenie> - man, czyli (manual)
3
tar tar [opcje] [plik tar] [pliki do tarowania] – program służący do archiwizacji Podstawowe opcje: -c (create) – utwórz archiwum -x (extract) – wydobądź z archiwum -t (test) – listuj zawartość archiwum -v (verbose) – wypisuj pełne komunikaty podczas pracy -r (append) – dołączaj do archiwum -f (file) – użyj pliku -z (gzip) – uzyj gzipa tar –cvf plik.tar * - archiwizacja wszystkich plików do plik.tar tar –xvf plik.tar – wypakowanie z archiwum
4
gzip/gunzip gzip [pilk] – kompresja pliku algorytmem LZ
gunzip [pilk] – dekompresja pliku algorytmem LZ -c – bez kompresji (bywa używane jeśli plik jest już skompresowany) -l – podaje stopień kompresji -r – wejdź rekursywnie do podkatalogów -S – użyj innego rozszerzenia (standardowo .gz) -v (verbose) -t – testuj zawartość archiwum -#n stopień kompresji, gdzie n jest liczbą 1-9
5
ftp FTP to protokół transferu plików, typu klient-serwer (wymaga znajomości miejsca docelowego). ftp to także nazwa jednego z najprostszych programów klienckich protokołu (standardowo dołączanego do linuxa). Rolę serwera pełni zwykle program ftpd (ftp demon). Programy mogą się również nazywać inaczej, np. wsftp, ncftp itp. ftp – tak wywołujemy program klienta ftp w linuxie ftp – to także zwyczajowa nazwa użytkownika anonimowego (serwer może pozwalać na dostęp takim użytkownikiem), hasło jest nieobowiązkowe (zazwyczaj)
6
cat cat– najprostsze obok echo polecenie shella. Program cat przekierowuje swoje wejście na wyjście. Przykłady: cat plik.txt – wypisuje zawartość pliku plik.txt na ekranie cat plik.txt > plik2.txt – kopiuje znak po znaku zawartość jednego z plików do drugiego (przekierowanie wyjścia do pliku) cat > plik.txt – czyta z klawiatury (standardowe wejście) do pliku plik.txt
7
grep grep – służy do filtracji strumieni. Strumień jest odczytywany linia po linii, zaś na wyjście przedostają się tylko te linie, które są zgodne z podanym wzorcem. Tego polecenia używa się najczęściej z pipeline: cat /etc/passwd | grep wojmos – czyta plik z /etc/passwd i wypisuje na ekranie tylko linię zawierająca łańuch wojmos
8
Różnica między | a > cat /etc/passwd | grep wojmos
Różnica między | a > jest następująca: | służy do łączenia wyjścia jednego procesu z wejściem drugiego > służy do określania pliku, który będzie pełnił rolę wyjścia dla procesu cat /etc/passwd | grep wojmos To polecenie oznacza odczytanie pliku /etc/passwd przez programik cat i przekierowanie wyjścia na wejście grep’a wywołanego z parametrem wojmos. Innymi słowy: odpalone będą dwa procesy (cat i grep) połączone ze sobą. cat /etc/passwd > grep wojmos To polecenie nie ma zbyt dużego sensu. Oznacza ono odpalenie cata, którego wyjście zostanie przekierowane do PLIKU grep (fraza wojmos będzie poddana próbie interpretacji jako parametr albo nazwa pliku). Zauważmy, że cat /etc/passwd > grep oznaczałoby wylistowanie całej zawartości pliku /etc/passwd do pliku tekstowego o nazwie grep!
9
awk Awk jest zaawansowanym programem do edycji strumieni tekstowych. Na razie poznajemy jego najprostszą postać, służącą do filtracji kolumn tekstu: ls –l – zwraca zawartość katalogu -rw root root :27 anaconda-ks.cfg -rw-r--r-- 1 root root :18 grep -rw-r--r-- 1 root root :26 install.log -rw-r--r-- 1 root root :25 install.log.syslog ls –l | awk ‘{print $1 $8}’ – filtruje 1 i 8 kolumnę -rw anaconda-ks.cfg -rw-r--r--grep -rw-r--r--install.log -rw-r--r--install.log.syslog ls –l | awk ‘{print $1 ” ” $8}’ – filtruje 1 i 8 kolumnę rozdzielając je spacją -rw anaconda-ks.cfg -rw-r--r-- grep -rw-r--r-- install.log -rw-r--r-- install.log.syslog
10
ls ls (list) – służy do wyświetlania zawartości katalogu (jak dir)
Najczęściej stosowane opcje: -a (all) – wszystkie pliki (także ukryte, czyli zaczynające się od kropki) -A (almost all) – wszystkie poza . i .. -h (human-readable) – używane z l, podaje np. 1.3 Kb a nie 1320b -l (long form) – pełna informacja o plikach -S (sort by size) –srotuje wg wielkości
11
chmod chmod – zmienia atrybuty pliku, za pomocą 3 liczb
pierwsza oznacza prawa dla właściciela druga – prawa dla grupy, do której należy właściciel trzecia – prawa dla pozostałych Liczby są kodowane binarnie w kolejności: Read-Write-eXecute: RWX = 111bin = 7 czyli wszystkie prawa RWX = 100bin = 4 czyli tylko read RWX = 110bin = 6 czyli tylko read i write
12
chown chown – zmienia właściciela pliku (i/lub) jego grupę
chown wojmos plik – zmienia właściela pliku plik na użytkownika wojmos chown plik – zmienia właściela pliku plik na użytkownika wojmos, należącego do grupy www chown –R * – zmienia rekursywnie właściciela wszystkich plików na użytkownika wojmos, należącego do grupy www
13
mkdir mkdir – tworzy katalog o podanej nazwie
14
rm i rmdir rm – usuwa plik/pliki rm –r – wchodzi do podkatalogów
rm –f – nie prosi o potwierdzenie rmdir – usuwa pusty katalog
15
cd Cd – zmienia katalog bieżący cd .. – zmienia katalog na nadrzędny
cd – zmienia katalog na domowy
16
pico Pico – jeden z najprostszych i najprzyjemniejszych w obsłudze edytorów tekstowych. ^C – podaje numer linii ^W – szukanie ^X – zapis i wyjście ^O – zapis ^K – wytnij linię ^U – wklej linię
17
pwd pwd – podaje katalog, w którym jesteśmy
18
Skrypty Skrypt – wykonywalny programik w języku powłoki (w shellu). Musi mieć ustawiony atrybut wykonywalności. Plik powinien (choć nie musi) rozpoczynać się sekwencją: #!/bin/sh albo #!/bin/bash Co oznacza wymuszenie wykonania przez określonego shella Inne linie zaczynające się od # są interpretowane jako komentarze. Działający skrypt jest podłączony do standardowych strumieni: Wejścia (stdin), wyjścia (stdout) i błędów (stderr)
19
Skrypty - przekierowywanie
mojskrypt > xxx.txt – przekierowanie wyjścia do pliku xxx.txt mojskrypt < ccc – przekierowanie wejścia do linii pliku ccc mojskrypt 2>errors.txt – przekierowanie błędów Standardowe strumienie mają przypisane numery, a więc można też: mojskrypt 1>xxx.txt – przekierowanie wyjścia do pliku xxx.txt mojskrypt 2>/dev/null – przekierowanie błędów do /dev/null
20
du du – disku usage, podaje wielkość plików w katalogu
du –sh – sumuj pliki, podaj w postaci human-readable
21
df df – disc free, podaje wolne miejsce na dyskach
22
who i whoami who – podaje loginy pracujących użytkowników
whoami – podaje login użytkownika
23
Zmienne lokalne i środowiskowe
Zmienne środowiskowe to zmienne nie wymagające ustawienia: globalne - są elementem każdego shella (wykonywane skrypty dziedziczą ich wartość) lokalne – są elementem tego shella, w którym zostały zdefiniowane (wykonywane skrypty dziedziczą ich wartość) Zmienne skryptowe to zmienne ustawione w konkretnym skrypcie (formalnie są one zmiennymi lokalnymi skryptu, który do pracy wywołuje „swojego” shella) Typowe: $PATH – zmienna zawiera domyślnie przeszukiwane ścieżki $USER – użytkownik (właściciel shella) $TERM – rodzaj terminala
24
Zmienne lokalne i środowiskowe
Wypisywanie wartości zmiennych środowiskowych: echo $PATH Zmiana wartości zmiennej w konkretnym shellu (zmienna lokalna): zmienna=”wartosc” echo $zmienna Globalizowanie zmiennej: export –n zmienna Tworzenie zmiennej globalnej (to samo co export): declare –x zmienna
25
Sprawdzanie zakresu widoczności zmiennych
mojazmienna=”wojmos” – tworzymy zmienną echo $mojazmienna – wypisujemy wartość wojmos – to jest wartość zmiennej mojazmienna bash – wywołujemy nowego shella - wartość zmiennej jest nieustawiona exit – opuszczamy shella export –n mojazmienna wojmos - wartość zmiennej jest nieustawiona
26
printenv printenv – służy do wypisywania zawartości wszystkich zmiennych środowiskowych Podobny (ale nie identyczny) efekt uzyskamy stosując export
27
Zmienne specjalne $$ - zawiera numer PID procesu
$1...$9 – argumenty podane do wywołania $0 – nazwa skryptu, który wywołał proces - wszystkie argumenty $? – kod wykonania ostatniego polecenia
28
Zmienne skryptu Tworzone jak zmienne środowiskowe (de facto są nimi):
zmienna=wartość (nie może być spacji!) Bash dopuszcza także zmienne tablicowe: tablica=(element1 element2 element3) echo ${tablica[0]} echo ${tablica[1]} echo ${tablica[2]} lub echo ${tablica[*]} Usunięcie zmiennej: unset zmienna
29
Zmienne skryptu Ustawienie wartości zmiennej: zm=wartosc
Przypisanie zmiennej wyniku działania polecenia (skryptu) zm=`ls –l` (tzw. odwrotny apostrof!) Zmienne łańcuchowe: Cudzysłowy – pozwalają na rozwinięcie zmiennych znajdujących się w łańcuchu do ich wartości Apostrofy – NIE pozwalają na rozwinięcie zmiennych znajdujących się w łańcuchu do ich wartości
30
Rozwijanie wartości zmiennych w łańcuchu
Przykład: Zmienna jest rozwijana do swojej wartości: $ echo ”To jest proces. Jego PID to $$. Fajnie?” To jest proces. Jego PID to Fajnie? Zmienna nie jest rozwijana do swojej wartości: $ echo ’To jest proces. Jego PID to $$. Fajnie?’ To jest proces. Jego PID to $$. Fajnie?
31
Wczytywanie zmiennych z stdin
read – czyta zmienną z klawiatury Przykład: read x; echo $x; Opcje: -p coś - komunikat zachęty
32
Pętla for Pętla for służy do iterowania poleceń wobec wartości zmiennej. Przykład listy: for x in jeden dwa trzy do echo "To jest $x”; done; jeden dwa trzy
33
Pętla for Pętla for służy do iterowania poleceń wobec wartości zmiennej. Przykład listy związanej z plikie: for x in `cat plik` do echo "To jest $x”; done; X1 X2 X3
34
Sprawdzanie warunku if
Postać instrukcji if: if warunek then polecenie1; else polecenie2; fi; warunek jest zwykle realizowany poleceniem test. Polecenie to zapisuje się przeważnie w skróconej formie: [ ] Przykład: [ $zm = ” napis” ]
35
Przykład if Typowy przykład działania test w połączeniu z if:
#!/bin/sh zm="R2"; if [ $zm = "R" ] then echo "OK"; else echo "NOT OK"; fi;
36
Parametry dla test -a plik istnieje
-b plik istnieje i jest blokowym plikiem specjalnym - plik istnieje i jest plikiem znakowym -e plik istnieje -h plik istnieje i jest linkiem symbolicznym = sprawdza czy wyrażenia są równe != sprawdza czy wyrażenia są różne -n wyrażenie ma długość większą niż 0 -d wyrażenie istnieje i jest katalogiem -z wyrażenie ma zerową długość -r można czytać plik -w można zapisywać do pliku
37
Parametry dla test -x można plik wykonać
-f plik istnieje i jest plikiem zwykłym -p plik jest łączem nazwanym -N plik istnieje i był zmieniany od czasu jego ostatniego odczytu plik1 -nt plik2 plik1 jest nowszy od pliku2 plik1 -ot plik2 plik1 jest starszy od pliku2 -lt mniejsze niż -gt większe niż -ge większe lub równe -le mniejsze lub równe
38
If sprawdzający, czy plik istnieje
#!/bin/sh zm="R2"; if [ -e /etc/passwd ] then echo "OK"; else echo "NOT OK"; fi;
39
at at –f plik data – wykonuje plik o oznaczonym czasie
40
Shell Shell, czyli powłoka, jest środowiskiem, w którym uruchamiane są skrypty. Środowisko to zawiera pewien zestaw zmiennych (zmienne środowiskowe), można także tworzyć w nim dodatkowe zmienne lokalne. Typowe shelle: sh (podstawowy) ash bsh (Bourne shell) csh ksh bash (tzw. Bourne-again shell) - najpopularniejszy
41
Skrypty Skrypty shella powinny (formalnie – nie muszą) zaczynać się od komentarza, który określa rodzaj shella, którym powinny być interpretowane. #!/bin/sh Powyższa linia, choć jest komentarzem ZOSTANIE przetworzona: dla uruchomienia tego skryptu zostanie wywołany shell sh Mechanizm ten służy do zabezpieczania skryptów napisanych w jednym shellu przed błędnym wykonaniem w innym.
42
Zmienne shella Dostęp do zmiennej shella odbywa się poprzez jej nazwę.
Utworzenie zmiennej: x=5; UWAGA! Shell jest dość stary językiem, dlatego stosuje przestarzałe metody parsowania – m.in. Jest „czuły na spacje”. Poniższy zapis NIE JEST poprawny: x = 5;
43
Wartość zmiennej Dostęp do wartości zmiennej uzyskujemy przez operator $: Na przykład: echo $x; echo ”$x”; W przypadku 2 zmienna zostanie skonwertowana na łańcuch tekstowy równy wartości zmiennej (zgodnie z regułami rozwijania zmiennych w cudzysłowach) echo ‘$x’; - wypisuje po prostu napis: $x
44
Zmienne specjalne Najczęściej używane zmienne specjalne to:
$# - liczba parametrów polecenia Przykładowo, skrypt o nazwie moj: #!/bin/sh echo $#; Przy wywołaniu ($ - znak zachęty shella): $ ./mój Alfa Beta Gamma Zwraca: 3
45
Inne ważne zmienne: $@ - zawiera wszystkie parametry przekazane
#!/bin/sh echo "Parametry: echo "Liczba parametrow: $#"; $ ./my Alfa Beta Gamma Parametry: Alfa Beta Gamma Liczba parametrow: 3 $$ - PID (process ID) echo „PID: $$";
46
Wyrażenia Do ustalania wartości wyrażeń służy polecenie expr
UWAGA: pamiętać należy o spacjach! expr 3+3; <===== zwraca NAPIS 3+3 expr 3 + 3; <===== zwraca WARTOSC 6 Do testowania wartości wyrażeń służy [] (test): Jest on stosowany najczęściej z instrukcją if: if [ 3 –ge 2 ]; then echo ”3 jest wieksze”; else echo ”3 jest mniejsze”; fi;
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.