Sieci komputerowe. Wstęp do systemu Linux/UNIX, część II. Ewa Burnecka / Janusz Szwabiński. /

Podobne dokumenty
Bash - wprowadzenie. Bash - wprowadzenie 1/39

System operacyjny Linux

Wyrażenia regularne. Wyrażenia regularne 1/41

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

1 Przygotował: mgr inż. Maciej Lasota

Powłoka interpreter poleceń systemu UNIX

Środowisko programisty

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

Środowisko programisty Zestaw 7

1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape locate netscape

System operacyjny Linux

Pracownia Komputerowa wykład III

Architektura systemów informatycznych. Powłoka systemowa Architektura procesora

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Przekierowanie wejścia wyjścia:

Powłoka bash. Kurs systemu Unix 1

Skrypty powłoki w systemie Linux

1. Wyrażenia regularne. Symbole w wyrażeniach regularnych 1 :

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

J ezyk AWK Kurs systemu UNIX

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Technologie Informacyjne - Linux 3

Powłoka (shell) Powłoka ksh

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Strona1. Linux. Skrypty powłoki

Wstęp do Informatyki dla bioinformatyków

Interpreter poleceń oraz zmienne środowiskowe

Systemy operacyjne. Laboratorium 5. Awk podstawy. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Programowanie skryptów powłoki

Znaki globalne w Linuxie

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Pracownia Komputerowa wykład III

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Linux Polecenia. Problem nadpisywania plików. Zmienna noclobber i noglob. Filtry i metaznaki. Problem nadpisywania plików. Opracował: Andrzej Nowak

Wprowadzenie do programowania w powłoce

Wstęp do systemów wielozadaniowych laboratorium 19 awk

Systemy operacyjne 11

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

Filtry, metaznaki, cytowania. Proste skrypty. Polecenia find, tee, mail.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Tworzenie skryptu: Skrypty powłoki

Technologie Informacyjne - Linux 2

Podstawy Programowania C++

- wszystkie elementy - wszystkie elementy

chmod +x skrypt /bin/bash nazwa_skryptu ZMIENNA=123 ZMIENNA="wartość tekstowa" SCIEZKA="$HOME/plik" echo $SCIEZKA

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Systemy operacyjne Programowanie w języku powłoki sh

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

PODSTAWY INFORMATYKI

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Umieszczanie kodu. kod skryptu

Linux: System Plików

Podstawy programowania skryptów Sh

BASH - WPROWADZENIE Bioinformatyka 4

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19

Języki formalne i automaty Ćwiczenia 6

Języki skryptowe w programie Plans

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

1 Podstawy c++ w pigułce.

lekcja 8a Gry komputerowe MasterMind

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy JavaScript ćwiczenia

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Laboratorium Ubuntu Linux.

Pracownia Komputerowa wyk ad III

Bash, skrypty. Wojciech Dudek. 15 listopada Uniwersytet Warszawski

Programowanie w BASH u Skrypt do ćwiczeń

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Zmienne środowiskowe: Ścieżka przeszukiwana komendą.

Podstawy użytkowania Linux a

Ćwiczenie 9 Linux - operacje systemu plików

Ćwiczenie nr 14: System Linux

Wyrażenia regularne. Wojciech Tabiś Łukasz Jankowski

Wstęp do systemu Linux

Zastosowanie filtrów w Linuksie

1 Podstawy c++ w pigułce.

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

12. Skrypty w Linux - funkcje, instrukcje sterujące i obliczenia arytmetyczne

Elementy wyrażeń regularnych

OPCJE -A num, --after-context=num Wypisuje po pasujących liniach num linii następującego kontekstu.

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Podstawy programowania skrót z wykładów:

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Kurs pisania skryptów w powłoce BASH

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Transkrypt:

Sieci komputerowe Wstęp do systemu Linux/UNIX, część II Ewa Burnecka / Janusz Szwabiński ewa@ift.uni.wroc.pl / szwabin@ift.uni.wroc.pl Sieci komputerowe (C) 2003 Janusz Szwabiński p.1/47

Wstęp do systemu Linux/UNIX, część II Przeszukiwanie plików: grep Wyrażenia regularne Poszukiwanie plików: find Mała dygresja: vi Przetwarzanie plików: awk Skypty w powłoce Sieci komputerowe (C) 2003 Janusz Szwabiński p.2/47

Materiały w Sieci Steve Mansour, A Tao of Regular Expressions, http://sitescooper.org/tao-regexps.html Mendel Cooper, Advanced Bash-Scripting Guide, http://www.tldp.org/ldp/abs/html/ Sieci komputerowe (C) 2003 Janusz Szwabiński p.3/47

Przeszukiwanie plików: grep grep [opcje] wzorzec plik(i) Opcja Znaczenie -c liczba linii zawierajacych wzorzec -i nie rozróżniaj małych/dużych liter -n numer wiersza zawierajacego wzorzec -d akcja wykonaj akcję na katalogu (np. recurse, skip) -f plik wczytaj wzorzec z pliku Sieci komputerowe (C) 2003 Janusz Szwabiński p.4/47

-l wyświetl nazwę pliku zawierajacego wzorzec -r przeszukaj pliki w podkatalogach -v odwrócone przeszukiwanie Sieci komputerowe (C) 2003 Janusz Szwabiński p.5/47

Prosty przykład Plik tekst.txt: To jest kot. Ala ma kota. Kot jest czarny. Pies macha ogonem. grep -i -n "kot" * 1: To jest kot. 2: Ala ma kota. 3: Kot jest czarny. grep -i -v -n "kot" * 4: Pies macha ogonem. Sieci komputerowe (C) 2003 Janusz Szwabiński p.6/47

Wyrażenia regularne Metaznak Opis. dowolny pojedynczy znak $ znak końca linii ^ znak poczatku linii * dowolna (również zerowa) liczba wystapień znaku poprzedzajacego * \ cytowanie (wyłaczenie specjalnego znaczenia) [ ] dowolny ze znaków w nawiasie (jeśli pierszym znakiem jest ^ - odwrócenie wyrażenia) Sieci komputerowe (C) 2003 Janusz Szwabiński p.7/47

\< \> znaki na poczatku lub końcu słowa jeden lub drugi wzorzec (egrep ) + jedno lub więcej wystapień poprzedzajacego wyrażenia lub znaku? żadne lub jedno wystapienie poprzedzajacego wyrażenia lub znaku (egrep) \( \) umieszcza wzorzec w specjalnym schowku (do schowka odwołujemy się przez \1 do \9) Sieci komputerowe (C) 2003 Janusz Szwabiński p.8/47

\{i\} \{i,j\} i wystapień poprzedzajacego wyrażenia między i a j wystapień Sieci komputerowe (C) 2003 Janusz Szwabiński p.9/47

Klasy znaków Klasa [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] Znaki dopasowywane znaki alfanumeryczne znaki alfabetu spacja lub tabulacja znaki sterujace cyfry dziesiętne znaki drukowalne i widoczne znaki pisane mała litera znaki drukowalne Sieci komputerowe (C) 2003 Janusz Szwabiński p.10/47

[:space:] [:upper:] [:xdigit:] znaki białe znaki pisane duża litera cyfry szesnastkowe Sieci komputerowe (C) 2003 Janusz Szwabiński p.11/47

Przykłady wyszukiwania grep [opcje] wzor plik Wzór kot ^kot kot$ ^kot$ [Kk]ot k[ioa]t Działanie ciag znaków kot kot na poczatku kot na końcu wiersza kot jako jedyne słowo w wierszu Kot lub kot kit lub kot lub kat Sieci komputerowe (C) 2003 Janusz Szwabiński p.12/47

k[^ioa]t k.t ^...$ ^\. ^\.[a-z]\{2\} ^[^.] kot* druga litera to dowolny znak z wyjatkiem i, o lub a druga litera jest dowolnym znakiem dowolny wiersz zawierajacy trzy znaki dowolny wiersz zaczynajacy się kropka wiersz zaczynajacy się kropka, po której następuja dwa znaki pisane mała litera wiersz nie rozpoczynajacy się kropka kot, kota, kotara itd. Sieci komputerowe (C) 2003 Janusz Szwabiński p.13/47

[A-Z].* duża litera, po której następuje zero lub więcej znaków firm(a y) firma lub firmy (egrep ) Sieci komputerowe (C) 2003 Janusz Szwabiński p.14/47

grep w innych zastosowaniach ps aux grep szwabin ps aux egrep szwabin PID rpm -qa grep mozilla w cut -d " " -f 1 - grep -v USER sort -u Sieci komputerowe (C) 2003 Janusz Szwabiński p.15/47

Wyszukiwanie plików: find find [ścieżka] [kryteria] [akcje] Kryterium -atime n -mtime n -newer nazwa -size n Znaczenie ostatnie żadanie dostępu do pliku n dni temu plik modyfikowany n dni temu plik modyfikowany później niż plik nazwa rozmiar pliku wynosi n bloków 512 bajtowych Sieci komputerowe (C) 2003 Janusz Szwabiński p.16/47

-type c -fstype typ -name nazwa -perm p -user usr -group grp -nouser -nogroup plik jest określonego typu (np. f - plik zwykły) umożliwia podanie typu systemu plików plik o nazwie nazwa prawa dostępu do pliku wynosza p plik, którego właścicielem jest usr plik, którego grupa jest grp właściciel pliku nie figuruje w pliku haseł grupa pliku nie figuruje w pliku grup Sieci komputerowe (C) 2003 Janusz Szwabiński p.17/47

Typowe akcje Akcja -print -ls -exec cmd -ok cmd -xdev -prune Znaczenie wyświetl nazwę znalezionego pliku wyświetl długa informację o pliku wykonaj na znalezionym pliku polecenie cmd jak wyżej, ale z żadaniem potwierdzenia ograniczenie wyszukiwania do systemu plików zawierajacego katalog podstawowy zaniechaj wyszukiwania w znajdowanych katalogach Sieci komputerowe (C) 2003 Janusz Szwabiński p.18/47

w wielu systemach opcja -print uznawana jest za domyślna polecenia wykonywane na znajdowanych plikach za pośrednictwem -exec lub -ok musza być zakończone za pomoca \; klamry {} umieszczone za nazwa wykonywanego polecenia symbolizuja przekazywanie nazw znajdowanych plików jako jego argumentów Sieci komputerowe (C) 2003 Janusz Szwabiński p.19/47

Przykłady find. -name *.f90 -print find /home -size +2048 -mtime +30 -exec ls -l {} \; find /home/szwabin -type f -name core -exec rm {} \; find / -type f \(-perm 2000 -o -perm -4000 \) -print find ~ -name *.f90 -exec mv {} ~/f90 \; Sieci komputerowe (C) 2003 Janusz Szwabiński p.20/47

Mała dygresja, czyli vi Klawisz Znaczenie i Esc h/j/k/l x dd p u przejdź do trybu wstawiania wyjdź z trybu wstawiania przesuń kursor w lewo/dół/górę/prawo usuń znak usuń bieżac a linię wstaw skasowana linię za linia bieżac a undo : przejdź do trybu złożonych poleceń Sieci komputerowe (C) 2003 Janusz Szwabiński p.21/47

Tryb poleceń złożonych :w nazwa zapisz tekst w nowym pliku nazwa :wq :q! :help zapisz zmiany i wyjdź wyjdź nie zapisujac zmian pomoc Przydatne polecenie: vimtutor Sieci komputerowe (C) 2003 Janusz Szwabiński p.22/47

awk awk [opcje] skrypt plik(i) awk [opcje] -f plik_skryptu plik(i) Opcja -Ffs Znaczenie ustala znak rozdzielajacy pola na fs -v zmienna=wartosc przypisuje zmiennej wartość przed wykonaniem skryptu Sieci komputerowe (C) 2003 Janusz Szwabiński p.23/47

Skrypty w awk wzorzec {akcja} Wzorce: /wyrażenia regularne/ wyrażenie relacyjne operator pasowania do wyr. regularnych BEGIN END Sieci komputerowe (C) 2003 Janusz Szwabiński p.24/47

znaki ^ i $ odnosza się do poczatku i końca ciagu w polu (nie w wierszu!) dwa operatory pasowania do wyrażeń regularnych: ~ (zgodne) i!~ (niezgodne) wzorzec BEGIN (END) służy do określenia akcji wykonywanych przed (po) przetworzeniem pierwszego wiersza danych wejściowych Sieci komputerowe (C) 2003 Janusz Szwabiński p.25/47

Akcje w awk przypisanie zmiennych lub tablic polecenie drukowania wbudowane funkcje polecenie przepływu funkcje użytkownika Sieci komputerowe (C) 2003 Janusz Szwabiński p.26/47

Przykłady {print $1} /wzorzec/ {print $1} BEGIN {FS="\n"; RS=""} NF>2 drukowanie pierwszego pola każdego wiersza drukowanie 1. pola wierszy zawierajacych wzorzec wiersz pojedynczym polem więcej niż dwa pola w rekordzie $1 ~ /ważne/ drukowanie pól 3 i 2, jeśli {print $3,$2} pole 1 ma wartość ważne Sieci komputerowe (C) 2003 Janusz Szwabiński p.27/47

/wzorzec/ {x++} END {print x} {suma +=$1} END{print suma} length($0)<20 zliczanie i drukowanie liczby wystapień wzorca sumowanie liczb w pierwszej kolumnie drukowanie wierszy krótszych niż 20 znaków Sieci komputerowe (C) 2003 Janusz Szwabiński p.28/47

(Niektóre) Wbudowane zmienne FILENAME FS (OFS) NF NR RS (ORS) nazwa bieżacego pliku znak oddzielajacy pola (na wyjściu) liczba pól w bieżacym rekordzie numer bieżacego rekordu znak oddzielajacy rekordy (wyjściowe) $0 cały rekord danych wejściowych $n n-te pole bieżacego rekordu Sieci komputerowe (C) 2003 Janusz Szwabiński p.29/47

Operatory (...) $ ++ -- + -! * / % + - ^ ** [space] < > <= >=!= == ~!~ in &&?: Sieci komputerowe (C) 2003 Janusz Szwabiński p.30/47

Wybrane funkcje i polecenia Funkcje arytmetyczne Funkcje na łańcuchach znaków Instrukcje sterujace Funkcje czasu sin, cos, log, sqrt, rand, atan, int index, length, match, split, tolower, toupper for, while, do/while, if, break, exit, return, continue systime, strftime Sieci komputerowe (C) 2003 Janusz Szwabiński p.31/47

Przykłady prostych zastosowań awk ls -l awk {print $8,$5} awk -F: {print $1,$3,$4} /etc/passwd awk NF>0 wykaz.txt df -h sort -rnk 5 head -2 \ awk {print "partycja " $6 \ ":\t zapelniona w " $5} Sieci komputerowe (C) 2003 Janusz Szwabiński p.32/47

Piszemy skrypty w BASHu Przykład szwabin@defiant:~> cat -n mojsys.sh 1 #!/bin/bash 2 clear 3 echo "Witaj $USER!"\\ %$ 4 echo "Oto informacje dostarczone przez skrypt mojsys.sh..." 5 echo "Dzisiaj jest date, date +"%V". tydzień roku." 6 echo "Zalogowani użytkownicy: " 7 w cut -d " " -f 1 - grep -v USER sort -u 8 echo "System uname -s na procesorze uname -m." 9 echo "Status systemu:" 10 uptime 11 echo "...zrobione!" Sieci komputerowe (C) 2003 Janusz Szwabiński p.33/47

skrypt to zwykły plik tekstowy, zawierajacy w pierwszej linii ciag znaków "#!/bin/bash" jeśli w jednej linii chcemy umieścić więcej poleceń, oddzielamy je średnikami aby skrypt można było uruchomić, należy nadać mu atrybut wykonywalności Sieci komputerowe (C) 2003 Janusz Szwabiński p.34/47

Zmienne Przypisanie wartości var=123 var="abc efg" Rozwijanie zmiennych var1="$var 345" (apostrofy zamiast cudzysłowów zapobiegaja rozwijaniu) sciezka="$home/skrypty/" Przypisanie wyniku działania funkcji stan= uptime Sieci komputerowe (C) 2003 Janusz Szwabiński p.35/47

Niektóre wbudowane zmienne $HOME $HOSTNAME $PATH $PWD $USER katalog domowy nazwa komputera ścieżka dostępu do binariów bieżacy katalog bieżacy użytkownik $? wynik ostatniego polecenia $! numer ostatnio uruchomionego w tle procesu $$ numer procesu aktualnej powłoki Sieci komputerowe (C) 2003 Janusz Szwabiński p.36/47

$0 ścieżka do skryptu $# liczba argumentów skryptu $1 do $9 kolejne argumenty wywołania skryptu $* lub $@ wszystkie argumenty wywołania skryptu Sieci komputerowe (C) 2003 Janusz Szwabiński p.37/47

Wybrane operacje na łańcuchach znaków ${#lancuch} ${zmienna#wzorzec} ${zmienna%wzorzec} długość łańcucha znaków jeśli zmienna zawiera na poczatku wzorzec, zostanie on usunięty jeśli zmienna zawiera na końcu wzorzec, zostanie on usunięty Sieci komputerowe (C) 2003 Janusz Szwabiński p.38/47

Podstawianie parametrów ${var} ${var:-default} ${var:=default} ${var:+other} ${var:?errmsg} wartość zmiennej var jeśli var nie jest zdefiniowana, lub jest pusta, podstaw default jeśli zmienna var nie jest zdefiniowana, podstaw default jeśli zmienna var jest zdefiniowana, podstaw other jeśli var nie jest zdefiniowana, wypisz errmsg Sieci komputerowe (C) 2003 Janusz Szwabiński p.39/47

Instrukcje warunkowe program1 && program2 (program2 zostanie uruchomiony, jeśli program1 zwróci 0 ) program1 program2 (program2 zostanie uruchomiony, jeśli program1 zwróci wartość 0) Przykład cat plik grep -q kot && echo "kot się znalazł!" \ echo "nie ma kota" Sieci komputerowe (C) 2003 Janusz Szwabiński p.40/47

if if test; then instrukcje1 elif test; then instrukcje2 else instrukcje3 fi Sieci komputerowe (C) 2003 Janusz Szwabiński p.41/47

Typowe testy Test Prawda, jeśli... [ -d plik ] katalog plik istnieje [ -e plik ] plik istnieje [ -f plik ] zwykły plik istnieje [ -r plik ] plik istnieje i można go czytać [ -s plik ] plik istnieje i ma rozmiar > 0 [ plik1 -nt plik2 ] plik1 nowszy niż plik2 [ -z string ] string ma długość równa zeru [ -n string ] string ma długość > 0 Sieci komputerowe (C) 2003 Janusz Szwabiński p.42/47

[ string1=string2 ] oba łańcuchy sa jednakowe [ string1!=string2 ] oba łańcuchy sa różne [!expr ] wyrażenie expr jest fałszywe [ expr1 -a expr2 ] oba wyrażenia sa prawdziwe [ expr1 -o expr2 ] przynajmniej jedno wyrażenie jest prawdziwe [ arg1 -eq arg2 ] arg1 = arg2 [ arg1 -lt arg2 ] arg1 < arg2 [ arg1 -gt arg2 ] arg1 > arg2 Sieci komputerowe (C) 2003 Janusz Szwabiński p.43/47

Przykład if [ $# -ne 2 ]; then echo "Ten skrypt potrzebuje dokładnie" echo "dwóch parametrów" exit 1 fi Sieci komputerowe (C) 2003 Janusz Szwabiński p.44/47

case case $zmienna in "aaa") instrukcje1;; "bbb") instrukcje2;; *) instrukcje3;; esac Sieci komputerowe (C) 2003 Janusz Szwabiński p.45/47

Pętle while test; do done instrukcje for i in test; do done instrukcje Przykład for i in *.eps; do mv $i ${i%.*}.ps done Sieci komputerowe (C) 2003 Janusz Szwabiński p.46/47

Wczytywanie danych read [opcje] zmienna1 zmienna2... zmiennan jeżeli użyjemy read bez podania zmiennej, wówczas dane zostana przypisane zmiennej $REPLY Sieci komputerowe (C) 2003 Janusz Szwabiński p.47/47