Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:dydaktyka:unix:lab_skrypty [2017/11/16 16:42]
kkutt [4 Złożone skrypty]
pl:dydaktyka:unix:lab_skrypty [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Filtry i Skrypty powłoki Sh ====== ​ 
-<​code>​ 
-W związku z narastającą liczbą osób, które zwą informatykę ​ 
-"​czarną magią"​ przedstawiam listę różnic między ​ 
-informatykiem a czarnoksiężnikiem:​ 
  
-Czarnoksiężnik krzyczy "​hokus-pokus"​ i "​abra-kadabra"​. 
-Informatyk: "​bash"​ "​grep"​ czy "​sed"​ 
- 
-Czarnoksiężnik odeśle cię do diabła. 
-Informatyk wyśle cię do /dev/null 
- 
-Czarnoksiężnik przenosi przedmioty wzrokiem. 
-Informatyk obsługuje komputer bez myszki. 
- 
-Czarnoksiężnicy porozumiewają się telepatycznie. 
-Informatycy używają komunikatorów. 
- 
-W domu czarnoksiężnika są tajemna komnaty. 
-W komputerze informatyka są ukryte foldery. 
- 
-Aby coś było niewidzialne,​ czarnoksiężnik używa różdżki. 
-Informatyk dodaje tylko kropkę przed nazwą. 
- 
-Ogólnie nasi czytelnicy oskarżali się na fakt, że obie grupy społeczne 
-używają niezrozumiałych słów (zaklęć, poleceń), noszą dziwne ubrania 
-(szaty, koszulki z napisami), otaczają się nietypowymi przedmiotami 
-(różdżki w parasolach, pen-drive'​y w pluszakach) a co najważniejsze - 
-posiadają dziwną i niepojętą dla zwykłego śmiertelnika wiedzę tajemną, 
-pozwalającą im rozwiązywać problemy (o których zasadniczo nikt nie 
-wie) w sposób, którego nikt nie rozumie. 
- 
-                               /* nadesłał: Grzegorz Mucha, IS 2012 */ 
-</​code>​ 
- 
- 
-===== DO PRZYGOTOWANIA ===== 
-Samodzielnie należy przed tym laboratorium przygotować:​ 
- 
-    * podstawy pracy z wybranym edytorem vi, Emacs, nano, pico 
-    * przeczytać artykuł pt.: {{:​pl:​dydaktyka:​unix:​gjn-sh.pdf|Podstawy programowania skryptów Sh}} 
-    * przeczytać artykuł pt.: {{:​pl:​dydaktyka:​unix:​gjn-bash.pdf|GNU Bash więcej niż Sh}} 
- 
-Dodatkowo przeglądnąć (w celu ew. skorzystania w czasie zajęć): 
- 
-    * zapoznać się z //​[[http://​www.tldp.org/​guides.html#​abs|Advanced Bash-Scripting Guide]]// 
-    * przegląnąć artykuł (3 części) //Bash by example// [[http://​www.ibm.com/​developerworks/​linux/​library/​l-bash/​|część 1]], [[http://​www.ibm.com/​developerworks/​library/​l-bash2/​|Część 2]], [[http://​www.ibm.com/​developerworks/​library/​l-bash3/​|Część 3]] 
-    * ew. przeglądnąć [[http://​www.tldp.org/​HOWTO/​Bash-Prog-Intro-HOWTO.html|BASH Programming - Introduction]] 
- 
-===== WPROWADZENIE ===== 
- 
- 
-==== Rola skryptów w administrowaniu ​ ==== 
- 
-    * pozwalają na łatwe zautomatyzowanie często wykonywanych zadań, 
-    * upraszczają administrowanie systemem, 
-    * umożliwiają dostosowanie narzędzi administracyjnych do swoich celów, 
-    * jak również stworzenie swoich własnych narzędzi. 
- 
- 
-==== Czym są skrypty ​ ==== 
- 
-    * skrypty są plikami zawierającymi programy w języku skryptowym. 
-    * ten język jest najczęściej interpretowany,​ 
-    * w pewnym stopniu spowalnia to jego pracę, 
-    * ale ułatwia pisanie i uruchamianie. 
-    * dostarcza wielu narzędzi "​wysokopoziomowych"​ 
- 
-==== Języki i narzędzia do pisania skryptów ​ ==== 
-Istnieje wiele różnorodnych języków i narzędzi do pisania skryptów. Najpopularniejsze to: 
- 
-    * Sh, 
-    * Csh/Ksh, 
-    * AWK, 
-    * Perl, 
-    * Tcl, 
-    * Python. 
- 
-==== Skrypty powłoki Sh  ==== 
-Skrypt sh jest to: 
- 
-    * plik tekstowy zawierający dowolne polecenia wykonywalne oraz wyrażenia języka sh, 
-    * nawet prosta sekwencja poleceń, normalnie wydawanych w powłoce sh, zapisana w pliku staje się skryptem. 
- 
- 
-==== Uruchamianie pliku skryptu ​ ==== 
- 
-    * Aby skrypt można było wykonywać bezpośrednio poprzez podanie nazwy, należy nadać mu atrybut wykonywalności (+x). 
-    * Wykonywalny plik tekstowy zawierający polecenia jest uruchamiany najczęściej przy pomocy powłoki logowania użytkownika. 
-    * Aby mieć pewność, że skrypt zostanie uruchomiony przy pomocy odpowiedniego interpretera,​ trzeba to w nim zapisać. 
-    * Pierwsza linia skryptu powinna mieć postać: 
- 
-      #​!/​pelnasciezka/​interpreter opcje 
- 
-    * Co w przypadku skryptów sh wygląda tak: 
- 
-      #!/bin/sh 
- 
-    * Od znaku hash (#) zaczyna się komentarze, sekwencja ''#​!''​ na początku pliku jest traktowana jako podanie interpretera. 
- 
- 
-==== Przydatne narzędzia ==== 
- 
-Pisząc skyrpty korzysta się z dowolnych poleceń Unixa. 
-Tym niemniej największą rolę odgrywają zestawy podstawowych narzędzi GNU. 
- 
-Proszę przeczytać manual do: 
-  * //​textutils//​ 
-  * //​fileutils//​ 
-  * //​sh-utils//​ 
- 
-Dodatkowo przydatne narzędzia to: 
-  * **find** 
-  * **xargs** 
-  * **sed** 
-  * **awk** 
- 
-==== Podstawianie wyników pracy poleceń ​ ==== 
-Podstawianie wyników poleceń w linii poleceń jest realizowane przez odwrotny apostrof (klawisz tyldy, nad tabulatorem),​ na przykład: 
- 
-<​cli> ​ 
-$ echo "To jest system"​ `uname` "na maszynie "​`hostname` 
-</​cli>​ 
- 
-==== Find ==== 
-Program **find** służy do wyszukiwania plików w systemie plików. 
-Podstawowe użycie to: 
- 
-  find sciezka -name nazwapliku -print 
- 
-Pozwala na zadawanie wielu kryteriów wyszukiwania,​ łączonych operatorami boolowskimi. 
- 
-==== Język Sh ==== 
- 
-    * Zmienne - podstawy 
-    * Dowolne polecenia dostępne w systemie 
-    * Zmienne i polecenia zewnętrzne - odwrócony apostrof, 
-    * Instrukcje warunkowe: **if**, **test** i **case**, 
-    * Funkcje 
-    * Parsing opcji z linii poleceń (przykład parser.sh) 
-    * Inne... 
- 
-Szczegóły w artykule {{:​pl:​dydaktyka:​unix:​gjn-sh.pdf|Podstawy programowania skryptów Sh}} 
- 
-===== ĆWICZENIA ===== 
- 
-==== - Przydatne narzędzia ==== 
-===  Find === 
-Znaleźć przy pomocy find: 
- 
-    * w katalogu ///​usr/​bin//​ wszystkie pliki o nazwie zaczynającej się na ''​au'',​ 
-    * w katalogu ///tmp// wszystkie pliki należące do użytkownika ''​root'',​ 
-    * w katalogu ///tmp// wszystkie pliki modyfikowane w ciągu ostatnich 24 godzin, 
-    * w katalogu ///tmp// wszystkie pliki zwykłe o uprawnieniach 700. 
- 
-===  Podstawianie wyników pracy poleceń === 
-Przy pomocy odwróconego apostrofu (obok Tabulatora!) napisać polecenie przypisujące do zmiennej WYNIK: 
- 
-    * aktualną datę, 
-    * napis o treści System pracuje od A, jest zalogowanych B uzytkownikow,​ gdzie za A i B mają być wstawione odpowiednie informacje z polecenia **uptime** 
- 
-Przykład: 
- 
-  WYNIK="​To jest system `uname` na maszynie `hostname`";​ echo $WYNIK 
-  To jest system Linux na maszynie deathstar 
-==== - Zaawansowane filtry ==== 
- 
-Napisać filtr, który: 
- 
-    * wyświetli 7 pierwszych, posortowanych alfabetycznie,​ nazw plików o nazwie kończącej się na p znajdujących się w katalogu ///​usr/​bin//​. 
-    * poda liczbę wszystkich plików zawierających w nazwie słowo ''​debian'',​ znajdujących sie w katalogu ///​usr/​bin//​. 
-    * zapisze do pliku spis posortowaną alfabetycznie listę użytkowników aktualnie zalogowanych z komputerów mających w nazwie domeny napis ''​.agh.edu.pl''​ 
-    * wybierze z 6 ostatnich linii pliku spis te, które zawierają słowo cos i poda ilość występujących w nich znaków. (plik testowy należy stworzyć) 
-==== - Proste skrypty ==== 
-===  Edytory === 
-Oglądnąć jak przebiega edycja w edytorze mcedit i GNU Emacs (w razie potrzeby włączyć: ''​M-x sh-mode''​ i ''​M-x font-lock-mode''​) 
- 
-===  Tworzenie skryptów === 
-Napisać poprawny skrypt, który wyświetli: 
- 
-    * aktualną datę, nazwę i czas pracy systemu, 
-    * spis zalogowanych użytkowników i spis sesji osoby uruchamiającej skrypt, 
-    * wyświetli prawa dostępu do pliku podanego jako parametr z linii poleceń: ''​skrypt plik''​ i poda typ/opis tego pliku 
-    * do powyższego skryptu dopisać (najlepiej w postaci funkcji) kod sprawdzający czy właściciel pliku jest zalogowany, a jeżeli tak to wyświetli informacje o nim i jego otwarte sesje. 
-    * napisać skrypt (np. do użycia jako CGI) generujący dynamicznie stronę WWW (plik HTML) o tytule: ''​To jest spis plikow w katalogu KATALOG''​ zawierającą spis i opis plików w podanym z lini poleceń katalogu, na każda pozycja spisu jest hiperpołączniem do odpowiedniego pliku. 
- 
- 
-==== - Złożone skrypty ==== 
-Przeanalizować działanie skryptów podanych na [[http://​home.agh.edu.pl/​~gjn/​wiki/​dydaktyka:​materialy#​skrypty|starej stronie]] 
-===== Jeśli chcesz wiedzieć więcej ===== 
-  * Napisz skrypt, który dla każdego z plików podanych jako argumenty wywołania wyświetli w kolejnych liniach 3 najczęściej powtarzające się w nim słowa. 
-  * Napisz skrypt, który dla każdego z plików podanych jako argumenty sprawdzi (np. za pomocą polecenia ''​file''​) zastosowany na nim typ kompresji, a następnie zastosuje odpowiedni program do rozpakowania go. Jeżeli plik wejściowy nie jest spakowany, skrypt powinien wyswietlić ostrzeżenie i nie podejmować żadnej akcji względem tego pliku. 
-  * Napisz skrypt, który zarchiwizuje wszystkie pliki z Twojego katalogu domowego zmodyfikowane w przeciągu ostatnich 24 godzin (można użyć polecenia ''​find''​). 
-  * Napisz skrypt, który wyświetli po jednym wszystkie pliki z katalogu domowego większe niż 100kB. Dla każdego wyświetlonego pliku skrypt ma zapytać, czy uzytkownik chce skompresować czy usunąć plik, postapić zgodnie z jego wyborem, i przejść do nastepnego pliku. Skrypt ma zapisać do pliku nazwy i czas usunięcia usuniętych plików. 
-  * Napisz skrypt "​bezpiecznego usuwania"​ ''​srm.sh'',​ który podane jako argumenty pliki skompresuje (o ile już nie są skompresowane - należy to sprawdzić, np. przy pomocy polecenia ''​file''​) a następnie przeniesie je do folderu ''/​home/​user/​trash''​. Przy wywołaniu skrypt powinien sprawdzić folder ''​trash''​ i usunąć z niego pliku starsze niż 48 godzin. 
-  * Napisz skrypt, który rozwiązuje równanie kwadratowe (przyjmując jako argumenty parametry równania), użyj polecenia ''​bc''​. 
-  * Lista mailingowa. Napisz skrypt, uzywając polecenia ''​mail'',​ który zarządza prostą listą mailingową. Skrypt ma za zadanie co miesiąc odczytywać treść zadanego pliku (podanego jako 1.argument) i rozsyłać go adresatom umieszczonym na liście w pliku podanym jako 2. argument. 
- 
-  * Więcej ciekawych zadań: [[http://​www.linuxtopia.org/​online_books/​advanced_bash_scripting_guide/​writingscripts.html|tu]] 
-  * //​[[http://​www.gnu.org/​software/​sed/​|Sed]]//:​ seria artykułów na [[http://​www.ibm.com/​developerworks|dW]]:​ [[http://​www.ibm.com/​developerworks/​linux/​library/​l-sed1.html|część 1]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-sed2.html|część 2]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-sed3.html|część 3]], 
-  * //​[[http://​www.gnu.org/​software/​awk/​|Awk]]//:​ seria artykułów na [[http://​www.ibm.com/​developerworks|dW]]:​ [[http://​www.ibm.com/​developerworks/​linux/​library/​l-awk1.html|część 1]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-awk2.html|część 2]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-awk3.html|część 3]], 
-  * Cykl przykładów narzędzi: [[http://​www.ibm.com/​developerworks/​linux/​library/​l-tiptex1.html|Tip 1]] [[http://​www.ibm.com/​developerworks/​linux/​library/​l-tiptex2.html|Tip 2]] [[http://​www.ibm.com/​developerworks/​linux/​library/​l-tiptex3.html|Tip 3]] [[http://​www.ibm.com/​developerworks/​linux/​library/​l-tiptex4.html|Tip 4]] [[http://​www.ibm.com/​developerworks/​linux/​library/​l-tiptex5.html|Tip 5]] [[http://​www.ibm.com/​developerworks/​linux/​library/​l-tiptex6.html|Tip 6]] 
pl/dydaktyka/unix/lab_skrypty.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0