to get the file
Transkrypt
to get the file
Język C, Laboratorium nr 1 1/4 Programowanie w języku C mgr inż. Grzegorz Łukawski Instrukcja laboratoryjna nr 1 Temat: System Linux, edytor VI, skrypty wsadowe 1) Podstawowe komendy systemu Linux 1.1) Praca z systemem plików: cd <nazwa> Zmiana bieżącego katalogu na wskazany pwd Wyświetlenie bieżącego katalogu ls Wyświetlenie listy plików i podkatalogów w bieżącym katalogu ls –l j.w. ale ze szczegółowymi informacjami mkdir <nazwa> Utworzenie katalogu rmdir <nazwa> Usunięcie katalogu (tylko pustego) rm <nazwa> Usunięcie pliku rm –r <nazwa> Usunięcie katalogu wraz z zawartością cat <plik> Wyświetlenie wskazanego pliku more <plik> Wyświetlenie wskazanego pliku (z podziałem na strony) cp <from> <to> Skopiowanie pliku lub katalogu mv <from> <to> Przesunięcie lub zmiana nazwy pliku lub katalogu man <polecenie> Pomoc na temat wskazanego polecenia chmod <tryb> <nazwa> Zmiana praw dostępu wskazanego pliku lub katalogu, np.: chmod 777 plik - Nadanie wszystkich praw dla wskazanego pliku chmod u-x plik - Zabranie prawa wykonywania właścicielowi pliku chmod o+w plik - Nadanie prawa pisania dla pozostałych 1.2) Procesy: ps -e Wyświetla listę aktywnych procesów kill –9 <pid> Zabicie procesu o wskazanym identyfikatorze (pid) 1.3) Dostęp do napędów wymiennych i archiwizacja plików: mount <ścieżka> Zamontowanie napędu na który wskazuje podana ścieżka umount <scieżka> Odmontowanie napędu tar cvzf [arch] [pliki] Utworzenie archiwum TAR ze wskazanych plików. Nazwa archiwum powinna mieć rozszerzenie „tgz”, do wskazywania plików można używać znaków zastępujących (* i ?) tar tvzf [arch] Testowanie (wyświetlenie listy zawartości) wskazanego archiwum tar xvzf [arch] Rozpakowanie zawartości archiwum do bieżącego katalogu Język C, Laboratorium nr 1 2) Podstawowe komendy edytora VI Wszystkie komendy działają tylko w trybie komend. 2.1) Przełączanie między trybami pracy: Klawisz ESC Funkcja Przejście z trybu wpisywania do trybu komend a Przejście do trybu wpisywania – rozpoczęcie na prawo od kursora A j.w. ale rozpoczęcie od końca wiersza w którym stoi kursor i j.w. ale rozpoczęcie na lewo od kursora (w miejscu stania kursora) I j.w. ale rozpoczęcie na początku wiersza 2.2) Wyszukiwanie: <nr>G Skok do wskazanego wiersza pliku (np. 15G spowoduje skok do wiersza nr 15) Ctrl+g Wyświetla numer wiersza w którym stoi kursor /tekst Szuka wystąpienia podanego tekstu n Następne wystąpienie N Poprzednie wystąpienie % Szuka nawiasu „do pary” 2.3) Kasowanie, kopiowanie i wklejanie: dd d<n>d yy y<n>y p Kasuje jeden wiersz (umieszczając go w buforze) Kasuje n kolejnych wierszy (umieszczając w buforze), np. d5d – 5 wierszy Skopiowanie jednego wiersza do bufora Skopiowanie n kolejnych wierszy do bufora, np. y20y – 20 wierszy Wklejenie zawartości bufora 2.4) Komendy liniowe: :q Wyjście bez zapisania zmian (jeżeli zmian nie było) :q! Wyjście bez zapisania zmian :w Zapisanie otwartego pliku :w <nazwa> :wq :r <plik2> :set number Zapisanie pod wskazaną nazwą Wyjście z zapisaniem pliku Wpisuje zawartość plik2 do pliku nad którym pracujemy Włączenie numeracji wierszy :set nonumber Wyłączenie numeracji wierszy 2/4 Język C, Laboratorium nr 1 3/4 3) Skrypty wsadowe powłoki BASH • • • • • Skrypt wsadowy to zwykły plik tekstowy z ustawionym atrybutem X (wykonywalny); Skrypt może wywoływać dowolne polecenia systemowe i uruchamiać dowolne programy analogicznie jak z linii poleceń; Wszystko umieszczone po znaku # aż do końca linii jest komentarzem; Pierwszy wiersz pliku powinien wyglądać tak: #!/bin/bash Polecenie echo służy do wyświetlania tekstów, np.: echo „Hello world” 3.1) Standardowe wyjście Efekty działania każdego polecenia systemowego lub programu który wyświetla wyniki na ekranie mogą być zapisane w pliku przez tzw. przekierowanie standardowego wyjścia: ls >lista.txt - Lista plików w bieżącym katalogu zostanie zapisana we wskazanym pliku ls >>lista.txt - Lista plików zostanie dopisana do wskazanego pliku 3.2) Parametry Skrypt wsadowy może odbierać argumenty podawane przez użytkownika, np.: moj_skrypt -a 200 Zostanie potraktowane jako wywołanie skryptu z dwoma parametrami. Do odczytania parametrów wewnątrz skryptu służą specjalne zmienne: $1, $2 ... $9 - Odpowiada kolejnym parametrom $# - Zwraca liczbę faktycznie podanych parametrów 3.3) Zmienne Mogą być deklarowane w dowolnym miejscu, odwołanie do zmiennej jest poprzedzone znakiem $, np.: zmienna=Stefan - Deklaracja nowej zmiennej echo „Mam na imie $zmienna” - Odwołanie do zmiennej Wartość zmiennej może zostać wczytana od użytkownika, np.: echo „Jak masz na imie?” read imie 3.4) Blok warunkowy if [ <warunek> ] then <lista instrukcji ... gdy warunek spełniony> else <lista instrukcji ... gdy warunek niespełniony> fi Porównywanie tekstów: $odpowiedz = tak <równe> $odpowiedz != tak <różne> Porównywanie liczb: $ilosc -eq 8 <równe> $ilosc -ne 9 <różne> Język C, Laboratorium nr 1 4/4 3.5) Przykładowy skrypt wsadowy #!/bin/bash if [ $# -eq 1 ] then echo "Podales parametr, na pewno wykonac?" read odp if [ $odp = tak ] then echo "Przystepuje do dzialania..." ls $1 fi else echo "Nie podales parametru!" fi 4) Zadania do wykonania Napisać skrypt wsadowy z kontrolą podawanych parametrów. W przypadku nie podania parametrów skrypt wyświetla opis z instrukcją użycia. Zadanie A: • Utworzyć dokładny listing bieżącego katalogu, zapisać w tymczasowym pliku; • Do pliku dopisać informację o ścieżce do bieżącego katalogu; • Gotowy plik wyświetlić na ekranie; • Tymczasowy plik zarchiwizować programem tar do archiwum o nazwie podanej jako parametr skryptu; • Skasować plik tymczasowy. Zadanie B: • Utworzyć katalog o nazwie „kopie_zapasowe” w bieżącym katalogu; • Do nowego katalogu skopiować wszystkie pliki o podanym rozszerzeniu (przekazywane do skryptu jako parametr); • Wyświetlić na ekranie listę skopiowanych plików. Zadanie C: • Zapytać użytkownika o imię; • Zapisać do tymczasowego pliku wiersz tekstu z podanym imieniem (np. „Stefan to mistrz”); • Do tymczasowego pliku dopisać treść pliku którego nazwę podano jako parametr skryptu; • Usunąć oryginalny plik; • Zmienić nazwę pliku tymczasowego na taką jaką miał skasowany plik.