Programowanie 1 Wprowadzenie do bash-a Elwira Wachowicz elwira@ifd.uni.wroc.pl 06 lutego 2012 Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 1 / 19
Cel zajęć: Zapoznanie sie z systemem operacyjnym Linux na poziomie uzytkownika, podstaw powłoki bash oraz prostych programów w języku C. Wykaz literatury: L.J. Arthur, T. Burns, Unix. Programowanie w shellu, Mikom, 1998, Warszawa. R. Petersen, Programowanie w systemie Linux. Kurs podstawowy, Edition 2000, 2001, Kraków. S. Prata, Szkoła programowania. Język C, Robomatic, 1999, Wrocław. B.W. Kernighan, D.M. Ritchi, Język ANSI C, WNT, 1988, Warszawa. S.G. Kochan, Język C. Wprowadzenie do programowania, Helion, 2005, Gliwice. Mnóstwo informacji i przykładów w sieci... Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 2 / 19
Unix jest systemem operacyjnym. Unix Time-Sharing System (pisane równiez jako UNIX) system operacyjny rozwijany od 1969 r. w Bell Labs (UNIX System Laboratories, USL) przez Dennisa Ritchie i Kena Thompsona. W latach 70. i 80. zdobył bardzo dużą popularność, co zaowocowało powstaniem wielu odmian i implementacji. Część z nich, w szczególności Linux oraz Mac OS X, jest w użyciu do dnia dzisiejszego. UNIX jest zarejestrowanym znakiem towarowym The Open Group. Wikipedia Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 3 / 19
Unix Stworzony dla naukowców i specjalistów, którzy potrzebowali bardzo wydajnego i elastycznego środowiska. Zalety: Jest niezależny od platformy sprzętowej. Większa cześć rozwoju internetu odbywała się na unix-ach i nadal tam dominuje. Bardzo duża stabilność. Małe wymagania sprzętowe może pracować na starszym lub słabszym sprzęcie Niektóre wersje (Linux, *BSD, OpenSolaris, Android) są darmowe. Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 4 / 19
Superkomputery (Linux) Systemy finansowe Serwery (Linux) Unix Desktopy (MacOSX, Linux) Tablety, czytniki e-booków, telefony (Android, ios, Linux) Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 5 / 19
Linux Prywatny projekt fińskiego studenta informatyki Linusa Torvaldsa. Stworzył on otwartego i darmowego UNIX-a pracującego na komputerach PC. W 1991: wersja 0.11. Linus pracuje tylko nad jądrem systemu, powłoki, środowiska graficzne i in. są rozwijane przez programistów na całym świecie prywatnych i pracujących w firmach. Linux to często synonim dystrybucji, czyli zestawu programów rozpowszechnianych łącznie i dających po zainstalowaniu gotowy do użycia system. Najpopularniejsze dystrybucje (http://www.distrowatch.com:) Mint Ubuntu Fedora Debian opensuse Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 6 / 19
Budowa UNIX-a Programy shellowe, skrypty Shelle: bash, ksh, sh, csh jądro sprzęt Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 7 / 19
System plików / bin etc home lib usr tmp var adam elwira kasia bin etc include lib share src bin Dokumenty Programy tmp rozdział1.doc rozdział2.doc mail.txt Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 8 / 19
Nazwy ścieżkowe Przykłady: / /home/elwira/dokumenty/text1.doc /usr/bin/kmail Nazwy specjalne: katalog domowy - poprzedni katalog roboczy + bieżący katalog roboczy. bieżący katalog roboczy../ katalog jeden poziom wyżej w hierarchii login katalog domowy użytkownika login Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 9 / 19
Terminal tekstowy Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 10 / 19
Polecenia w shellu Shell jest interpreterem poleceń. Polecenie jest plikiem, który znajduje się w systemie. Jest to wykonywalny plik binarny lub skrypt (zestaw poleceń). Składnia poleceń: polecenie -opcje argumenty Polecenie można wpisać jako niezależną nazwę (w domyślnych katalogach zdefiniowanych w $PATH) lub poprzedzoną ścieżką. Ważne: Uruchomienie polecenia z bieżącego katalogu wymaga podania jego ścieżki:./polecenie -opcje argumenty Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 11 / 19
Polecenia w shellu Opcje modyfikują działanie poleceń. Mogą być pojedynczą literą (-f) lub literą, po której występuje jakaś wartość (-f 45). Równoważne są zapisy: polecenie -l -s -t polecenie -lst polecenie -l -st Białe znaki (spacja, tabulacja, znak nowej linii) oddzielają polecenie do opcji i argumentów. Równoważne zapisy: $ ls -l /home/elwira/ $ ls -l /home/elwira/ $ ls -l /home/elwira/ Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 12 / 19
Pomoc w shellu W każdej chwili można uzyskać pomoc dotyczącą składni: $ polecenie --help $ man polecenie $ info polecenie Jeśli nie pamiętamy polecenia, pomoże apropos: $ apropos polecenie Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 13 / 19
Pomoc w shellu $ apropos edit joe (1) - własny edytor Joe go (Joe s Own Editor) mcedit (1) - terminalowy edytor tekstowy dla systemów Unixowych ed (1) - text editor hexedit (1) - view and edit files in hexadecimal or in ASCII kate (1) - Advanced text editor for KDE lavplay (1) - Playback and edit MJPEG video mcedit (1) - Internal file editor of GNU Midnight Commander psed (1) - a stream editor sed (1) - stream editor for filtering and transforming text tcsh (1) - C shell with file name completion and command line editing vim (1) - Vi IMproved, a programmers text editor Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 14 / 19
Metaznaki Aby łatwiej posługiwać się nazwami plików i katalogów stosuje się metaznaki które: Pozwalają oszczędniej pisać. Zachęcają do stosowania konwencji nazw. Upraszczają programowanie w shellu. * dopasuj dowolny ciąg znaków (włączając spację)? dopasuj pojedynczy znak alfanumeryczny [...] dopasuj pojedynczy znak lub zestaw znaków z nawiasu. bieżący katalog roboczy login katalog domowy użytkownika login {lista} wygeneruje nazwy zawierające ciągi znaków z listy Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 15 / 19
Metaznaki: przykłady $ ls /home/elwira/doc/dokument_*/*.doc $ ls ~elwira/doc/dokument_*/rozdział_? $ ls doc/dokument_*/rozdział_1?_*.doc $ ls../doc/dokument_?/rozdział_??_*.doc $ ls doc/dokument_*/rozdział_[179]_*.doc $ ls doc/dokument_*/rozdział_1[2-6]_*.doc $ ls doc/dokument_*/rozdział_[179]_*.doc $ ls doc/dokument_*/rozdział_[1-46-9]_*.doc $ ls doc/dokument_*/rozdział_[!5]_*.doc $ ls ~/*/*{.doc,.doc.back} $ echo f{a,i,aul,oo}t fat fit fault foot Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 16 / 19
Inne znaki specjalne Znak Znaczenie Przykład ; Separator sekwencji poleceń polc1;polc2;polc3 & Wykonaj polecenie w tle polc1 & Połącz polecenia w potok polc1 polc2 () Grupuj standardowe wyjścia poleceń polc1 (polc2; polc3) < Przeadresuj wejście polecenia polc1 < plik1 > Przeadresuj wyjście polecenia polc1 > plik1 ${zmienna} Podstaw wartość zmiennej shella ${zmienna} polecenie Podstaw wynik działania polecenia zmn= polc1 napis Cytuj wszystkie znaki w napisie 1,00 napis Cytuj wykonując podstawienia ${zmn}$1 \ Zacytuj znak specjalny dosłownie \* # Komentarz w skryptach # uwaga! Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 17 / 19
Polecenia związane z plikami i katalogami Typ Polecenie Działanie Katalog cd Zmień katalog ls Wyświetl zawartość katalogu pwd Wyświetl nazwę bieżącego katalogu mkdir Utwórz nowy katalog rmdir Usuń istniejący katalog (o ile jest pusty) Plik cat Połącz pliki cp Kopiuj plik (pliki) csplit Podziel pliki w oparciu o argumenty ln Dołącz nazwę do istniejącego pliku mv Przenieś plik (pliki) split Podziel plik na części o n wierszach Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 18 / 19
Polecenie ls -l Elwira Wachowicz (elwira@ifd.uni.wroc.pl) Programowanie 1 06 lutego 2012 19 / 19