1 / 46

Wybrane aspekty informatyki

Wybrane aspekty informatyki. Wojciech St. Mościbrodzki PIN PJWSTK, Wykład dla SNM Gdańsk, 2011. 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). tar.

gavan
Download Presentation

Wybrane aspekty informatyki

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 > 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------- 1 root root 1183 2008-02-16 03:27 anaconda-ks.cfg -rw-r--r-- 1 root root 1190 2008-12-14 10:18 grep -rw-r--r-- 1 root root 28071 2008-02-16 03:26 install.log -rw-r--r-- 1 root root 4352 2008-02-16 03: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 www.wojmos plik – zmienia właściela pliku plik na użytkownika wojmos, należącego do grupy www chown –R www.wojmos * – 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 echo $mojazmienna – wypisujemy wartość - wartość zmiennej jest nieustawiona exit – opuszczamy shella echo $mojazmienna – wypisujemy wartość wojmos – to jest wartość zmiennej mojazmienna export –n mojazmienna bash – wywołujemy nowego shella echo $mojazmienna – wypisujemy wartość 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 30928. 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) • #!/bin/sh • 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;

More Related